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
This commit is contained in:
Uma Maheswari Ramalingam
2010-10-22 10:07:41 -07:00
parent 2b858caecb
commit cc7605ce61

View File

@@ -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");