summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Brad Ebinger <breadley@google.com> 2018-03-15 15:18:57 -0700
committer Brad Ebinger <breadley@google.com> 2018-03-19 15:52:42 -0700
commit89661faa1bfd0c331b4cf7da1dcf3e2ba58d53bc (patch)
tree5a1a5dbfdab979cbf92074a4c8bcd030d0eb144a
parent98c1d17cb43eeea437c4fead9c6a26316208aa38 (diff)
Add empty CdmaSmsSubaddress to CDMA PDU parsing
We were not providing an empty subaddress when parsing CDMA PDU, which caused an NPE when receiving CDMA IMS SMS. Bug: 73994015 Test: Manual, MT/MO SMS Merged-In: Ic8e24c73cbb9a22236bb153ba290338184504cc3 Change-Id: I07be3ac64341eb9235f6da1b6870ac746188f73a
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/SmsMessage.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
index 14c5f4bebebb..964a31304db5 100644
--- a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
+++ b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
@@ -470,6 +470,9 @@ public class SmsMessage extends SmsMessageBase {
int bearerDataLength;
SmsEnvelope env = new SmsEnvelope();
CdmaSmsAddress addr = new CdmaSmsAddress();
+ // We currently do not parse subaddress in PDU, but it is required when determining
+ // fingerprint (see getIncomingSmsFingerprint()).
+ CdmaSmsSubaddress subaddr = new CdmaSmsSubaddress();
try {
env.messageType = dis.readInt();
@@ -520,6 +523,7 @@ public class SmsMessage extends SmsMessageBase {
// link the filled objects to this SMS
mOriginatingAddress = addr;
env.origAddress = addr;
+ env.origSubaddress = subaddr;
mEnvelope = env;
mPdu = pdu;
@@ -1009,8 +1013,11 @@ public class SmsMessage extends SmsMessageBase {
output.write(mEnvelope.teleService);
output.write(mEnvelope.origAddress.origBytes, 0, mEnvelope.origAddress.origBytes.length);
output.write(mEnvelope.bearerData, 0, mEnvelope.bearerData.length);
- output.write(mEnvelope.origSubaddress.origBytes, 0,
- mEnvelope.origSubaddress.origBytes.length);
+ // subaddress is not set when parsing some MT SMS.
+ if (mEnvelope.origSubaddress != null && mEnvelope.origSubaddress.origBytes != null) {
+ output.write(mEnvelope.origSubaddress.origBytes, 0,
+ mEnvelope.origSubaddress.origBytes.length);
+ }
return output.toByteArray();
}