From 30d421780f69a1be87a6e361de03854371ada355 Mon Sep 17 00:00:00 2001 From: Mengjun Leng Date: Tue, 23 May 2017 19:40:50 +0800 Subject: [PATCH] Fix wrong reading the sms lengh of stored long sms in RUIM According to 3GGP2 C.S0023 3.4.27, the maximum length of the message is 255. For one byte casts to int, the result will be a negative value when larger than 127, so must use 0xFF to transfer byte to int first. Change-Id: Ia3d64cae91f12a46ef7a1602300b44209a353966 --- .../java/com/android/internal/telephony/cdma/SmsMessage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java index 629173dfa23b9..7a53ef63e2a83 100644 --- a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java +++ b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java @@ -161,7 +161,7 @@ public class SmsMessage extends SmsMessageBase { // Second byte is the MSG_LEN, length of the message // See 3GPP2 C.S0023 3.4.27 - int size = data[1]; + int size = data[1] & 0xFF; // Note: Data may include trailing FF's. That's OK; message // should still parse correctly.