From 77ded32a4902f48d63cdc7be92b20b9cae34740d Mon Sep 17 00:00:00 2001 From: Wesley Wang Date: Fri, 9 Aug 2024 10:04:11 +0000 Subject: [PATCH] Fix NPE in DynamicDenylistManager Bug: 357280604 Change-Id: Ifcfe5cfea67f3ef692a865ef43db8e22de3cd68d Test: atest DynamicDenylistManagerTest Flag: EXEMPT for bug fix --- .../datasaver/DynamicDenylistManager.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManager.java b/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManager.java index b77d5eb6ddf..ecb2a48fe89 100644 --- a/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManager.java +++ b/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManager.java @@ -78,6 +78,11 @@ public class DynamicDenylistManager { return; } + if (mNetworkPolicyManager == null) { + Log.w(TAG, "syncPolicyIfNeeded: invalid mNetworkPolicyManager"); + return; + } + final SharedPreferences.Editor editor = getManualDenylistPref().edit(); final int[] existedUids = mNetworkPolicyManager .getUidsWithPolicy(POLICY_REJECT_METERED_BACKGROUND); @@ -91,6 +96,11 @@ public class DynamicDenylistManager { /** Set policy flags for specific UID. */ public void setUidPolicyLocked(int uid, int policy) { + if (mNetworkPolicyManager == null) { + Log.w(TAG, "setUidPolicyLocked: invalid mNetworkPolicyManager"); + return; + } + Log.i(TAG, "setUidPolicyLocked: uid=" + uid + " policy=" + policy); synchronized (mLock) { mNetworkPolicyManager.setUidPolicy(uid, policy); @@ -100,7 +110,7 @@ public class DynamicDenylistManager { /** Suggest a list of package to set as POLICY_REJECT. */ public void setDenylist(Set denylistTargetUids) { - if (denylistTargetUids == null) { + if (denylistTargetUids == null || mNetworkPolicyManager == null) { return; } final Set manualDenylistUids = getDenylistAllUids(getManualDenylistPref()); @@ -164,6 +174,12 @@ public class DynamicDenylistManager { Log.w(TAG, "resetDenylistIfNeeded: invalid conditions"); return; } + + if (mNetworkPolicyManager == null) { + Log.w(TAG, "setUidPolicyLocked: invalid mNetworkPolicyManager"); + return; + } + synchronized (mLock) { final int[] uids = mNetworkPolicyManager .getUidsWithPolicy(POLICY_REJECT_METERED_BACKGROUND);