From b940ed8adfb9e8e7f2af8ae70c63803afda10be7 Mon Sep 17 00:00:00 2001 From: Martin Hibdon Date: Mon, 19 Aug 2013 16:56:38 -0700 Subject: [PATCH] Fix an OutOfBoundsException b/10380970 This could happen if the response to the POP3 RETR request did not contain a content length. Change-Id: I99ad93ec71ba917e0f36bee204d7f8d05c79c5ff --- src/com/android/email/mail/store/Pop3Store.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/com/android/email/mail/store/Pop3Store.java b/src/com/android/email/mail/store/Pop3Store.java index 44e4ff536..7b5a11abb 100644 --- a/src/com/android/email/mail/store/Pop3Store.java +++ b/src/com/android/email/mail/store/Pop3Store.java @@ -585,13 +585,19 @@ public class Pop3Store extends Store { try { int start = ok + 3; int end = response.indexOf(" ", start); - String intString; - if (end > 0) { - intString = response.substring(start, end); + if (start < response.length()) { + // No length was supplied, this is a protocol error. + LogUtils.e(Logging.LOG_TAG, "No body length supplied"); + message.setSize(0); } else { - intString = response.substring(start); + final String intString; + if (end > 0) { + intString = response.substring(start, end); + } else { + intString = response.substring(start); + } + message.setSize(Integer.parseInt(intString)); } - message.setSize(Integer.parseInt(intString)); } catch (NumberFormatException e) { // We tried }