From cc7605ce61c27e3688e33dbf2bcafd1c12788784 Mon Sep 17 00:00:00 2001 From: Uma Maheswari Ramalingam Date: Fri, 22 Oct 2010 10:07:41 -0700 Subject: Fix for phone app crash in Icc Card. - Check for active phone in ICC handler before processing messages. - Boundary check for gsm/cdma subscription app index while retrieving the ICC Card App. Change-Id: I3d54447e8d48e3482763e78eeb2a737a34cec321 --- telephony/java/com/android/internal/telephony/IccCard.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'telephony/java/com') diff --git a/telephony/java/com/android/internal/telephony/IccCard.java b/telephony/java/com/android/internal/telephony/IccCard.java index 90f9e8c..e270ce9 100644 --- a/telephony/java/com/android/internal/telephony/IccCard.java +++ b/telephony/java/com/android/internal/telephony/IccCard.java @@ -487,6 +487,12 @@ public abstract class IccCard { CommandsInterface.SERVICE_CLASS_DATA + CommandsInterface.SERVICE_CLASS_FAX; + if (!mPhone.mIsTheCurrentActivePhone) { + Log.e(mLogTag, "Received message " + msg + "[" + msg.what + + "] while being destroyed. Ignoring."); + return; + } + switch (msg.what) { case EVENT_RADIO_OFF_OR_NOT_AVAILABLE: mState = null; @@ -626,7 +632,13 @@ public abstract class IccCard { index = mIccCardStatus.getGsmUmtsSubscriptionAppIndex(); } - IccCardApplication app = mIccCardStatus.getApplication(index); + IccCardApplication app; + if (index >= 0 && index < IccCardStatus.CARD_MAX_APPS) { + app = mIccCardStatus.getApplication(index); + } else { + Log.e(mLogTag, "[IccCard] Invalid Subscription Application index:" + index); + return IccCard.State.ABSENT; + } if (app == null) { Log.e(mLogTag, "[IccCard] Subscription Application in not present"); -- cgit v1.1