From 5be246ec8f5eb909a25f8622e48a55fb6bf38779 Mon Sep 17 00:00:00 2001
From: Moxie Marlinspike <moxie@thoughtcrime.org>
Date: Fri, 21 Jul 2017 16:11:55 -0700
Subject: [PATCH] Fix NPE for SMS pdus that could potentially be null

// FREEBIE
---
 .../thoughtcrime/securesms/jobs/SmsReceiveJob.java   | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/org/thoughtcrime/securesms/jobs/SmsReceiveJob.java b/src/org/thoughtcrime/securesms/jobs/SmsReceiveJob.java
index 1491dcf504..ae6cee56a1 100644
--- a/src/org/thoughtcrime/securesms/jobs/SmsReceiveJob.java
+++ b/src/org/thoughtcrime/securesms/jobs/SmsReceiveJob.java
@@ -1,6 +1,8 @@
 package org.thoughtcrime.securesms.jobs;
 
 import android.content.Context;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
 import android.telephony.SmsMessage;
 import android.util.Log;
 
@@ -27,10 +29,10 @@ public class SmsReceiveJob extends ContextJob {
 
   private static final String TAG = SmsReceiveJob.class.getSimpleName();
 
-  private final Object[] pdus;
+  private final @Nullable Object[] pdus;
   private final int      subscriptionId;
 
-  public SmsReceiveJob(Context context, Object[] pdus, int subscriptionId) {
+  public SmsReceiveJob(@NonNull Context context, @Nullable Object[] pdus, int subscriptionId) {
     super(context, JobParameters.newBuilder()
                                 .withPersistence()
                                 .withWakeLock(true)
@@ -104,7 +106,11 @@ public class SmsReceiveJob extends ContextJob {
     }
   }
 
-  private Optional<IncomingTextMessage> assembleMessageFragments(Object[] pdus, int subscriptionId) {
+  private Optional<IncomingTextMessage> assembleMessageFragments(@Nullable Object[] pdus, int subscriptionId) {
+    if (pdus == null) {
+      return Optional.absent();
+    }
+
     List<IncomingTextMessage> messages = new LinkedList<>();
 
     for (Object pdu : pdus) {