Guard NPE when fetching a voicemail that does not exist on the server
Bug:28174122
Change-Id: I5b8e41979fed3e4d6037aa4588f68c74c9a0c835
diff --git a/src/com/android/phone/common/mail/store/ImapFolder.java b/src/com/android/phone/common/mail/store/ImapFolder.java
index 90c552d..13c7424 100644
--- a/src/com/android/phone/common/mail/store/ImapFolder.java
+++ b/src/com/android/phone/common/mail/store/ImapFolder.java
@@ -15,6 +15,7 @@
*/
package com.android.phone.common.mail.store;
+import android.annotation.Nullable;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
@@ -213,7 +214,7 @@
}
}
-
+ @Nullable
public Message getMessage(String uid) throws MessagingException {
checkOpen();
@@ -223,6 +224,7 @@
return new ImapMessage(uid, this);
}
}
+ LogUtils.e(TAG, "UID " + uid + " not found on server");
return null;
}
diff --git a/src/com/android/phone/vvm/omtp/imap/ImapHelper.java b/src/com/android/phone/vvm/omtp/imap/ImapHelper.java
index da2d34b..d041221 100644
--- a/src/com/android/phone/vvm/omtp/imap/ImapHelper.java
+++ b/src/com/android/phone/vvm/omtp/imap/ImapHelper.java
@@ -276,14 +276,16 @@
}
public boolean fetchVoicemailPayload(VoicemailFetchedCallback callback, final String uid) {
- Message message;
try {
mFolder = openImapFolder(ImapFolder.MODE_READ_WRITE);
if (mFolder == null) {
// This means we were unable to successfully open the folder.
return false;
}
- message = mFolder.getMessage(uid);
+ Message message = mFolder.getMessage(uid);
+ if (message == null) {
+ return false;
+ }
VoicemailPayload voicemailPayload = fetchVoicemailPayload(message);
if (voicemailPayload == null) {
@@ -326,6 +328,9 @@
}
Message message = mFolder.getMessage(uid);
+ if (message == null) {
+ return false;
+ }
MessageStructureWrapper messageStructureWrapper = fetchMessageStructure(message);
if (messageStructureWrapper != null) {