From 2ae5fa027946dc02ac32795ec3893af8e199aadd Mon Sep 17 00:00:00 2001 From: Oliver Scott Date: Wed, 22 Dec 2021 16:11:34 +0100 Subject: [PATCH] Register broadcast receivers for PACKAGE_ADDED/UID_REMOVED on all users. The package and uid removed broadcast receivers are only registered in the primary user. Packages added and removed on secondary users are ignored. This is unsafe given that new packages can be granted the uid and the old policy applied to it. This addresses the problem by registering broadcast receivers for PACKAGE_ADDED and UID_REMOVED for all users. Test: 1. Create a new user 2. Install a new app in the user 3. Apply background data restriction uid policy 4. adb shell cmd netpolicy list restrict-background-blacklist 5. Uninstall app 6. adb shell cmd netpolicy list restrict-background-blacklist Change-Id: I8c87fcf0310fe1fc07095fdc599af10ba0a3d959 --- .../com/android/server/net/NetworkPolicyManagerService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java index c315b5c43deae..445a3c65ffe57 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java @@ -947,10 +947,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { final IntentFilter packageFilter = new IntentFilter(); packageFilter.addAction(ACTION_PACKAGE_ADDED); packageFilter.addDataScheme("package"); - mContext.registerReceiver(mPackageReceiver, packageFilter, null, mHandler); + mContext.registerReceiverForAllUsers(mPackageReceiver, packageFilter, null, mHandler); // listen for UID changes to update policy - mContext.registerReceiver( + mContext.registerReceiverForAllUsers( mUidRemovedReceiver, new IntentFilter(ACTION_UID_REMOVED), null, mHandler); // listen for user changes to update policy