diff options
| -rw-r--r-- | services/core/java/com/android/server/net/NetworkPolicyManagerService.java | 3 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java | 14 |
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) |