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

Commit dc77d5a9 authored by Taesu Lee's avatar Taesu Lee
Browse files

Fix invalid padding bits for 7-bit ASCII encoding



Calculate correct padding bits for 7-bit ASCII encoding so that
unnecessary byte 0x00 is not appended in the User Data subparameter.
See the below issue case.

After encodeUserDataPayload(UserData;5 ASCII chars) in encodeUserData(),
UserData.numFields = 5 and UserData.payload = 5 septets and 5 bits
padding. Nevertheless if UserData.paddingBits = 0 still, paddingBits in
encodeUserData() will be 3. As a result, unnecessary one byte(5 + 3 bits)
padding is appended.

Test: Manual

Change-Id: I1cd19d5c491d8eed3b41bf5cb101fc77cb6090ab
Signed-off-by: default avatarTaesu Lee <taesu82.lee@samsung.com>
parent 66089876
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -764,13 +764,13 @@ public final class BearerData {
                                      " > " + SmsConstants.MAX_USER_DATA_BYTES + " bytes)");
        }

        /*
         * TODO(cleanup): figure out what the right answer is WRT paddingBits field
         *
         *   userData.paddingBits = (userData.payload.length * 8) - (userData.numFields * 7);
         *   userData.paddingBits = 0; // XXX this seems better, but why?
         *
         */
        if (bData.userData.msgEncoding == UserData.ENCODING_7BIT_ASCII) {
            bData.userData.paddingBits =
                    (bData.userData.payload.length * 8) - (bData.userData.numFields * 7);
        } else {
            bData.userData.paddingBits = 0;
        }

        int dataBits = (bData.userData.payload.length * 8) - bData.userData.paddingBits;
        int paramBits = dataBits + 13;
        if ((bData.userData.msgEncoding == UserData.ENCODING_IS91_EXTENDED_PROTOCOL) ||