diff options
| author | 2025-01-03 12:37:17 -0800 | |
|---|---|---|
| committer | 2025-01-03 16:06:52 -0800 | |
| commit | ef93e8a503fc1aa3bd9ff0cd37cd76261c6c80aa (patch) | |
| tree | 079bd4290f29d6e76074c9177b8fb53fe7018683 | |
| parent | 99d0b77830ad1af6b8be3539a7e81182b88aa52e (diff) | |
Allow root uid to listen for uid state changes across users.
ActivityManager.checkUidPermission() doesn't exempt root uids
similar to other permission checking methods. While we
investigate why, switch to a different permission checking
method.
Bug: 385438310
Test: atest ./tests/app/src/android/app/cts/ActivityManagerFgsBgStartTest.java
Flag: EXEMPT bugfix
Change-Id: I6f254f08f3dafe0156f2f6a77f3ef7ad461a0e65
| -rw-r--r-- | services/core/java/com/android/server/am/UidObserverController.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/am/UidObserverController.java b/services/core/java/com/android/server/am/UidObserverController.java index 7eeec32cf24a..f58e3f85bb26 100644 --- a/services/core/java/com/android/server/am/UidObserverController.java +++ b/services/core/java/com/android/server/am/UidObserverController.java @@ -31,6 +31,7 @@ import android.os.Binder; import android.os.Handler; import android.os.IBinder; import android.os.Message; +import android.os.Process; import android.os.RemoteCallbackList; import android.os.RemoteException; import android.os.SystemClock; @@ -90,10 +91,12 @@ public class UidObserverController { + UUID.randomUUID().toString()); synchronized (mLock) { + final boolean canInteractAcrossUsers = ActivityManager.checkComponentPermission( + INTERACT_ACROSS_USERS_FULL, callingUid, Process.INVALID_UID, true) + == PackageManager.PERMISSION_GRANTED; mUidObservers.register(observer, new UidObserverRegistration(callingUid, callingPackage, which, cutpoint, - ActivityManager.checkUidPermission(INTERACT_ACROSS_USERS_FULL, callingUid) - == PackageManager.PERMISSION_GRANTED, uids, token)); + canInteractAcrossUsers, uids, token)); } return token; |