Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 22018a8c authored by Brad Ebinger's avatar Brad Ebinger
Browse files

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
Change-Id: I07be3ac64341eb9235f6da1b6870ac746188f73a
parent 991f8b0c
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -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);
        // 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();
    }