From 524dee0fb5b381ebe2927fba9dbb025c684bc89e Mon Sep 17 00:00:00 2001 From: Behrooz Aliabadi Date: Tue, 16 Jul 2013 12:12:12 +0200 Subject: [PATCH] Fix null pointer exceptions in NetworkPolicyEditor This upload fixes a null pointer exception issue. After this fix the modified methods return their corresponding default values instead of null. Change-Id: Idb94f8b808b8dd18be5e3fc92cc5560ce0f81c4f --- .../settings/net/NetworkPolicyEditor.java | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/net/NetworkPolicyEditor.java b/src/com/android/settings/net/NetworkPolicyEditor.java index 82bd3857586..ad2afa0466a 100644 --- a/src/com/android/settings/net/NetworkPolicyEditor.java +++ b/src/com/android/settings/net/NetworkPolicyEditor.java @@ -160,7 +160,8 @@ public class NetworkPolicyEditor { } public int getPolicyCycleDay(NetworkTemplate template) { - return getPolicy(template).cycleDay; + final NetworkPolicy policy = getPolicy(template); + return (policy != null) ? policy.cycleDay : -1; } public void setPolicyCycleDay(NetworkTemplate template, int cycleDay, String cycleTimezone) { @@ -173,7 +174,8 @@ public class NetworkPolicyEditor { } public long getPolicyWarningBytes(NetworkTemplate template) { - return getPolicy(template).warningBytes; + final NetworkPolicy policy = getPolicy(template); + return (policy != null) ? policy.warningBytes : WARNING_DISABLED; } public void setPolicyWarningBytes(NetworkTemplate template, long warningBytes) { @@ -185,7 +187,8 @@ public class NetworkPolicyEditor { } public long getPolicyLimitBytes(NetworkTemplate template) { - return getPolicy(template).limitBytes; + final NetworkPolicy policy = getPolicy(template); + return (policy != null) ? policy.limitBytes : LIMIT_DISABLED; } public void setPolicyLimitBytes(NetworkTemplate template, long limitBytes) { @@ -309,8 +312,16 @@ public class NetworkPolicyEditor { final NetworkPolicy policy3g = getPolicy(template3g); final NetworkPolicy policy4g = getPolicy(template4g); - final NetworkPolicy restrictive = policy3g.compareTo(policy4g) < 0 ? policy3g - : policy4g; + NetworkPolicy restrictive = null; + if ((policy3g == null) && (policy4g == null)) { + return false; + } else if (policy3g == null) { + restrictive = policy4g; + } else if (policy4g == null) { + restrictive = policy3g; + } else { + restrictive = policy3g.compareTo(policy4g) < 0 ? policy3g : policy4g; + } mPolicies.remove(policy3g); mPolicies.remove(policy4g); mPolicies.add(new NetworkPolicy(templateAll, restrictive.cycleDay, @@ -321,6 +332,9 @@ public class NetworkPolicyEditor { } else if (!beforeSplit && split) { // duplicate existing policy into two rules final NetworkPolicy policyAll = getPolicy(templateAll); + if (policyAll == null) { + return false; + } mPolicies.remove(policyAll); mPolicies.add(new NetworkPolicy(template3g, policyAll.cycleDay, policyAll.cycleTimezone, policyAll.warningBytes, policyAll.limitBytes, SNOOZE_NEVER, SNOOZE_NEVER,