diff options
| author | 2018-03-19 21:04:56 +0000 | |
|---|---|---|
| committer | 2018-03-19 21:04:56 +0000 | |
| commit | 78a7b5d44ab8d746711c2748a3a217f20c7259e0 (patch) | |
| tree | 03a8523141d07c39eb2cf3c0e42953b803d97042 | |
| parent | af3dc4fc70357da4df01bb0950e8f3b6c1095edb (diff) | |
| parent | 22018a8ce7e8f278e548b84e6664406b3f45f927 (diff) | |
Merge "Add empty CdmaSmsSubaddress to CDMA PDU parsing"
| -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(); } |