From 3d0db6a08b15d2cb8d7022dfecf38b133ea7c343 Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Thu, 28 Oct 2021 10:38:58 -0700 Subject: [PATCH] Fix NPE in NetworkPolicyLogger.networkBlocked(). Fixes: 203822380 Test: atest cts/hostsidetests/net/src/com/android/cts/net/HostsideRestrictBackgroundNetworkTests.java Change-Id: Ibe5340caf6a7f6b1457c9230e34607cf293f39f3 Merged-In: Ibe5340caf6a7f6b1457c9230e34607cf293f39f3 --- .../android/server/net/NetworkPolicyLogger.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/net/NetworkPolicyLogger.java b/services/core/java/com/android/server/net/NetworkPolicyLogger.java index 81106b1a5ca76..b66c4668f2a08 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyLogger.java +++ b/services/core/java/com/android/server/net/NetworkPolicyLogger.java @@ -15,12 +15,14 @@ */ package com.android.server.net; +import static android.net.ConnectivityManager.BLOCKED_REASON_NONE; import static android.net.INetd.FIREWALL_CHAIN_DOZABLE; import static android.net.INetd.FIREWALL_CHAIN_POWERSAVE; import static android.net.INetd.FIREWALL_CHAIN_RESTRICTED; import static android.net.INetd.FIREWALL_CHAIN_STANDBY; import static android.net.INetd.FIREWALL_RULE_ALLOW; import static android.net.INetd.FIREWALL_RULE_DENY; +import static android.net.NetworkPolicyManager.ALLOWED_REASON_NONE; import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_DOZABLE; import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_POWERSAVE; import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_RESTRICTED; @@ -29,6 +31,7 @@ import static android.net.NetworkPolicyManager.FIREWALL_RULE_DEFAULT; import static android.os.PowerExemptionManager.reasonCodeToString; import static android.os.Process.INVALID_UID; +import android.annotation.Nullable; import android.app.ActivityManager; import android.app.ActivityManager.ProcessCapability; import android.net.NetworkPolicyManager; @@ -81,13 +84,18 @@ public class NetworkPolicyLogger { private final Object mLock = new Object(); - void networkBlocked(int uid, UidBlockedState uidBlockedState) { + void networkBlocked(int uid, @Nullable UidBlockedState uidBlockedState) { synchronized (mLock) { if (LOGD || uid == mDebugUid) { Slog.d(TAG, "Blocked state of uid: " + uidBlockedState.toString()); } - mNetworkBlockedBuffer.networkBlocked(uid, uidBlockedState.blockedReasons, - uidBlockedState.allowedReasons, uidBlockedState.effectiveBlockedReasons); + if (uidBlockedState == null) { + mNetworkBlockedBuffer.networkBlocked(uid, BLOCKED_REASON_NONE, ALLOWED_REASON_NONE, + BLOCKED_REASON_NONE); + } else { + mNetworkBlockedBuffer.networkBlocked(uid, uidBlockedState.blockedReasons, + uidBlockedState.allowedReasons, uidBlockedState.effectiveBlockedReasons); + } } }