aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJooJooBee666 <desire4homicide@gmail.com>2015-01-24 16:19:38 -0500
committerJason Lynn <desire4homicide@gmail.com>2015-01-24 21:51:32 +0000
commit95413a7370dae78aee35f53e6d07d381a012b15b (patch)
tree254c555fca18ec86478224ab9d1ae3c16fe5c741
parente395e8ed953382d06b507b7a82e0e357bdd0c3b9 (diff)
downloadandroid_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-xsrc/java/com/android/internal/telephony/dataconnection/DcTracker.java44
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) {