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

Commit a753dfd2 authored by Chen Xu's avatar Chen Xu Committed by Gerrit Code Review
Browse files

Merge "Handle invalid destination address gracefully"

parents 67862237 b50183d2
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -278,6 +278,10 @@ public class SmsMessage extends SmsMessageBase {
                scAddress, destinationAddress, mtiByte,
                statusReportRequested, ret);

        // Skip encoding pdu if error occurs when create pdu head and the error will be handled
        // properly later on encodedMessage sanity check.
        if (bo == null) return ret;

        // User Data (and length)
        byte[] userData;
        try {
@@ -420,6 +424,9 @@ public class SmsMessage extends SmsMessageBase {
                scAddress, destinationAddress, (byte) 0x41, // MTI = SMS-SUBMIT,
                                                            // TP-UDHI = true
                statusReportRequested, ret);
        // Skip encoding pdu if error occurs when create pdu head and the error will be handled
        // properly later on encodedMessage sanity check.
        if (bo == null) return ret;

        // TP-Data-Coding-Scheme
        // No class, 8 bit data
@@ -451,7 +458,7 @@ public class SmsMessage extends SmsMessageBase {
     * @param destinationAddress the address of the destination for the message
     * @param mtiByte
     * @param ret <code>SubmitPdu</code> containing the encoded SC
     *        address, if applicable, and the encoded message
     *        address, if applicable, and the encoded message. Returns null on encode error.
     */
    private static ByteArrayOutputStream getSubmitPduHead(
            String scAddress, String destinationAddress, byte mtiByte,
@@ -482,6 +489,9 @@ public class SmsMessage extends SmsMessageBase {

        daBytes = PhoneNumberUtils.networkPortionToCalledPartyBCD(destinationAddress);

        // return empty pduHead for invalid destination address
        if (daBytes == null) return null;

        // destination address length in BCD digits, ignoring TON byte and pad
        // TODO Should be better.
        bo.write((daBytes.length - 1) * 2