diff options
author | JooJooBee666 <desire4homicide@gmail.com> | 2015-01-24 16:19:38 -0500 |
---|---|---|
committer | Jason Lynn <desire4homicide@gmail.com> | 2015-01-24 21:51:32 +0000 |
commit | 95413a7370dae78aee35f53e6d07d381a012b15b (patch) | |
tree | 254c555fca18ec86478224ab9d1ae3c16fe5c741 | |
parent | e395e8ed953382d06b507b7a82e0e357bdd0c3b9 (diff) | |
download | android_frameworks_opt_telephony-95413a7370dae78aee35f53e6d07d381a012b15b.tar.gz android_frameworks_opt_telephony-95413a7370dae78aee35f53e6d07d381a012b15b.tar.bz2 android_frameworks_opt_telephony-95413a7370dae78aee35f53e6d07d381a012b15b.zip |
DcTracker: Handle null waitingApns properly
If getWaitingApns is null, com.android.phone crashes due to
no valid checking for a null waitingApns.
Change-Id: Ic96c3ddb1cad2cf06cedfc2c46c39f6d93e469d7
-rwxr-xr-x | src/java/com/android/internal/telephony/dataconnection/DcTracker.java | 44 |
1 files changed, 31 insertions, 13 deletions
diff --git a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java index 1e0e60fcc..859bd0b78 100755 --- a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java +++ b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java @@ -1279,8 +1279,13 @@ public final class DcTracker extends DcTrackerBase { } if (DBG) { - log("trySetupData: call setupData, waitingApns : " - + apnListToString(apnContext.getWaitingApns())); + if (apnContext.getWaitingApns() == null) { + log("trySetupData: call setupData, waitingApns : null"); + } + else { + log("trySetupData: call setupData, waitingApns : " + + apnListToString(apnContext.getWaitingApns())); + } } retValue = setupData(apnContext, radioTech); @@ -2496,10 +2501,17 @@ public final class DcTracker extends DcTrackerBase { apnContext.removeWaitingApn(apnContext.getApnSetting()); if (DBG) { - log(String.format("onDataSetupComplete: WaitingApns.size=%d" + - " WaitingApnsPermFailureCountDown=%d", - apnContext.getWaitingApns().size(), - apnContext.getWaitingApnsPermFailCount())); + if (apnContext.getWaitingApns() == null){ + log(String.format("onDataSetupComplete: WaitingApns.size = null" + + " WaitingApnsPermFailureCountDown=%d", + apnContext.getWaitingApnsPermFailCount())); + } + else { + log(String.format("onDataSetupComplete: WaitingApns.size=%d" + + " WaitingApnsPermFailureCountDown=%d", + apnContext.getWaitingApns().size(), + apnContext.getWaitingApnsPermFailCount())); + } } handleError = true; } @@ -2548,7 +2560,7 @@ public final class DcTracker extends DcTrackerBase { } // See if there are more APN's to try - if (apnContext.getWaitingApns().isEmpty()) { + if (apnContext.getWaitingApns() == null || apnContext.getWaitingApns().isEmpty()) { apnContext.setState(DctConstants.State.FAILED); mPhone.notifyDataConnection(Phone.REASON_APN_FAILED, apnContext.getApnType()); @@ -3114,13 +3126,19 @@ public final class DcTracker extends DcTrackerBase { } private String apnListToString (ArrayList<ApnSetting> apns) { - StringBuilder result = new StringBuilder(); - for (int i = 0, size = apns.size(); i < size; i++) { - result.append('[') - .append(apns.get(i).toString()) - .append(']'); + if (apns == null) { + log("apnListToString: apns = null."); + return ""; + } + else { + StringBuilder result = new StringBuilder(); + for (int i = 0, size = apns.size(); i < size; i++) { + result.append('[') + .append(apns.get(i).toString()) + .append(']'); + } + return result.toString(); } - return result.toString(); } private void setPreferredApn(int pos) { |