From f08455451c5cca9b7e1bc22409df774c47b85e06 Mon Sep 17 00:00:00 2001 From: Wink Saville Date: Wed, 9 Nov 2011 17:31:34 -0800 Subject: [maguro] Update COMPREHENSION-TLV parser in CAT 1. Fix the ClassCastException while handling spec out 'Setup menu' -Ghana MTN simcard and JDI simcard sends abnormal 'setup menu'cmd. -Those 'setup menu' is spec out. -At the end of the proactive cmd,extra bytes '0x00 0x00 0x00 0x00' is followed. - That cause ClassCastException and phone crash. Bug: 5574160 Change-Id: Ieafb6c4efd94bb4e2a39a04612a6761c958654bb Signed-off-by: dujin.cha --- .../com/android/internal/telephony/cat/ComprehensionTlv.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/cat/ComprehensionTlv.java b/telephony/java/com/android/internal/telephony/cat/ComprehensionTlv.java index 99f662d9ee27..e5a2d31e5562 100644 --- a/telephony/java/com/android/internal/telephony/cat/ComprehensionTlv.java +++ b/telephony/java/com/android/internal/telephony/cat/ComprehensionTlv.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006 The Android Open Source Project + * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +28,7 @@ import java.util.List; * {@hide} */ class ComprehensionTlv { + private static final String LOG_TAG = "ComprehensionTlv"; private int mTag; private boolean mCr; private int mLength; @@ -88,8 +89,13 @@ class ComprehensionTlv { int endIndex = data.length; while (startIndex < endIndex) { ComprehensionTlv ctlv = ComprehensionTlv.decode(data, startIndex); - items.add(ctlv); - startIndex = ctlv.mValueIndex + ctlv.mLength; + if (ctlv != null) { + items.add(ctlv); + startIndex = ctlv.mValueIndex + ctlv.mLength; + } else { + CatLog.d(LOG_TAG, "decodeMany: ctlv is null, stop decoding"); + break; + } } return items; -- cgit v1.2.3-59-g8ed1b