From dc77d5a9ac786c717c0a58ec926361839ace26bf Mon Sep 17 00:00:00 2001 From: Taesu Lee Date: Thu, 7 Jun 2018 16:36:44 +0900 Subject: 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: Taesu Lee --- .../android/internal/telephony/cdma/sms/BearerData.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java b/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java index 9e6f19f9243d..dab14369d79c 100644 --- a/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java +++ b/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java @@ -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) || -- cgit v1.2.3-59-g8ed1b