From 9bd196bb4252039be0d965545b816d1559e74ebd Mon Sep 17 00:00:00 2001 From: Xia Ying Date: Mon, 28 Jul 2014 13:46:28 -0500 Subject: Fix the IndexOutOfBoundsException when unpacking GSM 8-bit pdu Some wap push messages contains the charactors which are not in the GSM 7 bit Default Alphabet table and its extension table, it cause the IndexOutOfBoundsException when unpacking GSM 8-bit encoded pdu. Solution: Replace them with white space. Change-Id: I273953341cffddc2269332eabc556e303ff81bec --- .../java/com/android/internal/telephony/GsmAlphabet.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'telephony') diff --git a/telephony/java/com/android/internal/telephony/GsmAlphabet.java b/telephony/java/com/android/internal/telephony/GsmAlphabet.java index 4cba70d..d1c8ef0 100644 --- a/telephony/java/com/android/internal/telephony/GsmAlphabet.java +++ b/telephony/java/com/android/internal/telephony/GsmAlphabet.java @@ -609,16 +609,25 @@ public class GsmAlphabet { } } else { if (prevWasEscape) { - char shiftChar = shiftTableToChar.charAt(c); + char shiftChar = + c < shiftTableToChar.length() ? shiftTableToChar.charAt(c) : ' '; if (shiftChar == ' ') { // display character from main table if not present in shift table - ret.append(languageTableToChar.charAt(c)); + if (c < languageTableToChar.length()) { + ret.append(languageTableToChar.charAt(c)); + } else { + ret.append(' '); + } } else { ret.append(shiftChar); } } else { if (!isMbcs || c < 0x80 || i + 1 >= offset + length) { - ret.append(languageTableToChar.charAt(c)); + if (c < languageTableToChar.length()) { + ret.append(languageTableToChar.charAt(c)); + } else { + ret.append(' '); + } } else { // isMbcs must be true. So both mbcsBuffer and charset are initialized. mbcsBuffer.clear(); -- cgit v1.1