diff options
author | Amit Mahajan <amitmahajan@google.com> | 2014-09-05 19:25:35 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-09-05 19:25:36 +0000 |
commit | f11b43d8bf80c68fc24626ea6417032ae250c556 (patch) | |
tree | fe81480fd42d2cde098cd175fbb6907b206fc468 /telephony | |
parent | 8eca9e0f0b7bee0d11dc410ba7be3b4c0eb8ffa8 (diff) | |
parent | 9bd196bb4252039be0d965545b816d1559e74ebd (diff) | |
download | frameworks_base-f11b43d8bf80c68fc24626ea6417032ae250c556.zip frameworks_base-f11b43d8bf80c68fc24626ea6417032ae250c556.tar.gz frameworks_base-f11b43d8bf80c68fc24626ea6417032ae250c556.tar.bz2 |
Merge "Fix the IndexOutOfBoundsException when unpacking GSM 8-bit pdu" into lmp-dev
Diffstat (limited to 'telephony')
-rw-r--r-- | telephony/java/com/android/internal/telephony/GsmAlphabet.java | 15 |
1 files changed, 12 insertions, 3 deletions
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(); |