From 70500d2253732f4e26988659c27d1b4186926c54 Mon Sep 17 00:00:00 2001 From: Yu Ping Hu Date: Tue, 18 Jun 2013 18:13:45 -0700 Subject: [PATCH] Return null instead of crashing when querying a bad folder. Bug: 9250557 Change-Id: Ic0074fa1f6db53a7495c7de48a8f42158a0ea1d9 --- src/com/android/email/provider/EmailProvider.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/com/android/email/provider/EmailProvider.java b/src/com/android/email/provider/EmailProvider.java index b5f011ac0..4af60d1e7 100644 --- a/src/com/android/email/provider/EmailProvider.java +++ b/src/com/android/email/provider/EmailProvider.java @@ -3141,11 +3141,12 @@ public class EmailProvider extends ContentProvider { private final FolderList mFolderList; private final Bundle mExtras = new Bundle(); - public EmailConversationCursor(Context context, Cursor cursor, long mailboxId) { + public EmailConversationCursor(final Context context, final Cursor cursor, + final Folder folder, final long mailboxId) { super(cursor); mMailboxId = mailboxId; mContext = context; - mFolderList = FolderList.copyOf(Lists.newArrayList(getFolder(mContext, mMailboxId))); + mFolderList = FolderList.copyOf(Lists.newArrayList(folder)); Mailbox mailbox = Mailbox.restoreMailboxWithId(context, mailboxId); // We assume that all message lists are complete @@ -3367,6 +3368,11 @@ public class EmailProvider extends ContentProvider { break; case UI_MESSAGES: long mailboxId = Long.parseLong(id); + final Folder folder = getFolder(context, mailboxId); + if (folder == null) { + // This mailboxId is bogus. + return null; + } if (isVirtualMailbox(mailboxId)) { c = getVirtualMailboxMessagesCursor(db, uiProjection, mailboxId, unseenOnly); } else { @@ -3374,7 +3380,7 @@ public class EmailProvider extends ContentProvider { genQueryMailboxMessages(uiProjection, unseenOnly), new String[] {id}); } notifyUri = UIPROVIDER_CONVERSATION_NOTIFIER.buildUpon().appendPath(id).build(); - c = new EmailConversationCursor(context, c, mailboxId); + c = new EmailConversationCursor(context, c, folder, mailboxId); break; case UI_MESSAGE: MessageQuery qq = genQueryViewMessage(uiProjection, id);