summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Annie Meng <anniemeng@google.com> 2018-05-23 13:46:25 -0700
committer android-build-merger <android-build-merger@google.com> 2018-05-23 13:46:25 -0700
commit8fcff1e013add53859b5c55153a3d0ae929c1f9d (patch)
tree986455ff097f4e9bdcf0501b350f1673887b017e
parentf2eacb2d3345fbe7fd58b218c8405188395faaf1 (diff)
parenta1b34a43a258db964adf487b266b68a3079c71a2 (diff)
Merge "Fix NPE in restoring network policies" into pi-dev
am: a1b34a43a2 Change-Id: I6d194662825bb794acd6c799444d35275d567da8
-rw-r--r--services/core/java/com/android/server/net/NetworkPolicyManagerService.java3
-rw-r--r--services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java14
2 files changed, 17 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index 5bd7c0b9ba9c..ab482bb2da98 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -2706,6 +2706,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
private void normalizePoliciesNL(NetworkPolicy[] policies) {
mNetworkPolicy.clear();
for (NetworkPolicy policy : policies) {
+ if (policy == null) {
+ continue;
+ }
// When two normalized templates conflict, prefer the most
// restrictive policy
policy.template = NetworkTemplate.normalize(policy.template, mMergedSubscriberIds);
diff --git a/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
index b4dc94192f24..17babe9635be 100644
--- a/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
@@ -1628,6 +1628,20 @@ public class NetworkPolicyManagerServiceTest {
}
}
+ /**
+ * Test that policy set of {null, NetworkPolicy, null} does not crash and restores the valid
+ * NetworkPolicy.
+ */
+ @Test
+ public void testSetNetworkPolicies_withNullPolicies_doesNotThrow() {
+ NetworkPolicy[] policies = new NetworkPolicy[3];
+ policies[1] = buildDefaultFakeMobilePolicy();
+ setNetworkPolicies(policies);
+
+ assertNetworkPolicyEquals(DEFAULT_CYCLE_DAY, mDefaultWarningBytes, mDefaultLimitBytes,
+ true);
+ }
+
private SubscriptionPlan buildMonthlyDataPlan(ZonedDateTime start, long limitBytes) {
return SubscriptionPlan.Builder
.createRecurringMonthly(start)