From c04b675a1a24a6247ac955af3a07ce74c61be456 Mon Sep 17 00:00:00 2001 From: Jake McGinty Date: Tue, 31 Mar 2015 10:41:23 -0700 Subject: [PATCH] Fix null-response NPE in outgoing MMS Fixes #2839 Closes #2840 // FREEBIE --- .../securesms/mms/OutgoingLegacyMmsConnection.java | 3 ++- .../securesms/mms/OutgoingLollipopMmsConnection.java | 7 ++++++- .../thoughtcrime/securesms/mms/OutgoingMmsConnection.java | 4 +++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/org/thoughtcrime/securesms/mms/OutgoingLegacyMmsConnection.java b/src/org/thoughtcrime/securesms/mms/OutgoingLegacyMmsConnection.java index ba55e94dac..0d3056df40 100644 --- a/src/org/thoughtcrime/securesms/mms/OutgoingLegacyMmsConnection.java +++ b/src/org/thoughtcrime/securesms/mms/OutgoingLegacyMmsConnection.java @@ -20,6 +20,7 @@ import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; +import android.support.annotation.NonNull; import android.util.Log; import org.apache.http.Header; @@ -70,7 +71,7 @@ public class OutgoingLegacyMmsConnection extends LegacyMmsConnection implements } @Override - public SendConf send(byte[] pduBytes) throws UndeliverableMessageException { + public SendConf send(@NonNull byte[] pduBytes) throws UndeliverableMessageException { try { MmsRadio radio = MmsRadio.getInstance(context); diff --git a/src/org/thoughtcrime/securesms/mms/OutgoingLollipopMmsConnection.java b/src/org/thoughtcrime/securesms/mms/OutgoingLollipopMmsConnection.java index d83a059643..b4178da103 100644 --- a/src/org/thoughtcrime/securesms/mms/OutgoingLollipopMmsConnection.java +++ b/src/org/thoughtcrime/securesms/mms/OutgoingLollipopMmsConnection.java @@ -21,6 +21,7 @@ import android.content.Context; import android.content.Intent; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; +import android.support.annotation.NonNull; import android.telephony.SmsManager; import android.util.Log; @@ -57,7 +58,7 @@ public class OutgoingLollipopMmsConnection extends LollipopMmsConnection impleme @Override @TargetApi(VERSION_CODES.LOLLIPOP) - public synchronized SendConf send(byte[] pduBytes) throws UndeliverableMessageException { + public synchronized SendConf send(@NonNull byte[] pduBytes) throws UndeliverableMessageException { beginTransaction(); try { MmsBodyProvider.Pointer pointer = MmsBodyProvider.makeTemporaryPointer(getContext()); @@ -74,6 +75,10 @@ public class OutgoingLollipopMmsConnection extends LollipopMmsConnection impleme Log.w(TAG, "MMS broadcast received and processed."); pointer.close(); + if (response == null) { + throw new UndeliverableMessageException("Null response."); + } + return (SendConf) new PduParser(response).parse(); } catch (IOException | TimeoutException e) { throw new UndeliverableMessageException(e); diff --git a/src/org/thoughtcrime/securesms/mms/OutgoingMmsConnection.java b/src/org/thoughtcrime/securesms/mms/OutgoingMmsConnection.java index 94cd324078..6e0ff1f474 100644 --- a/src/org/thoughtcrime/securesms/mms/OutgoingMmsConnection.java +++ b/src/org/thoughtcrime/securesms/mms/OutgoingMmsConnection.java @@ -1,9 +1,11 @@ package org.thoughtcrime.securesms.mms; +import android.support.annotation.NonNull; + import org.thoughtcrime.securesms.transport.UndeliverableMessageException; import ws.com.google.android.mms.pdu.SendConf; public interface OutgoingMmsConnection { - SendConf send(byte[] pduBytes) throws UndeliverableMessageException; + SendConf send(@NonNull byte[] pduBytes) throws UndeliverableMessageException; }