Merge "Add empty CdmaSmsSubaddress to CDMA PDU parsing"

This commit is contained in:
Treehugger Robot
2018-03-19 21:04:56 +00:00
committed by Gerrit Code Review

View File

@@ -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();
}