summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sudheer Shanka <sudheersai@google.com> 2025-01-03 12:37:17 -0800
committer Sudheer Shanka <sudheersai@google.com> 2025-01-03 16:06:52 -0800
commitef93e8a503fc1aa3bd9ff0cd37cd76261c6c80aa (patch)
tree079bd4290f29d6e76074c9177b8fb53fe7018683
parent99d0b77830ad1af6b8be3539a7e81182b88aa52e (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.java7
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;