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

Commit 89661faa 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
Merged-In: Ic8e24c73cbb9a22236bb153ba290338184504cc3
Change-Id: I07be3ac64341eb9235f6da1b6870ac746188f73a
parent 98c1d17c
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();
    }