diff options
| author | 2018-03-15 15:18:57 -0700 | |
|---|---|---|
| committer | 2018-03-19 15:52:42 -0700 | |
| commit | 89661faa1bfd0c331b4cf7da1dcf3e2ba58d53bc (patch) | |
| tree | 5a1a5dbfdab979cbf92074a4c8bcd030d0eb144a | |
| parent | 98c1d17cb43eeea437c4fead9c6a26316208aa38 (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.java | 11 |
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(); } |