summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nate(Qiang) Jiang <qiangjiang@google.com> 2022-06-02 17:02:45 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-06-02 17:02:45 +0000
commitcf36712cc53e1a19b6549284c3673327c68d7b45 (patch)
treeb81194c6ef6d6aec65cacd9bac43d95b9979cf53
parentcdc301cbc88d9f1479bff5005334dec00d0c8037 (diff)
parentd7f5f3233d779d4cc6f929875a14b53efb0fc8a7 (diff)
Merge "Allow system process register AttributionSource for app from other user" into tm-dev am: 6be9288ddb am: d7f5f3233d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18702825 Change-Id: Ibfa6369ca4b8d40274b8fb808cc0a7e4e1ae6f6b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerService.java10
1 files changed, 8 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index a83cb5e37ba2..2c1be72e02f0 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -966,8 +966,14 @@ public class PermissionManagerService extends IPermissionManager.Stub {
final PackageManagerInternal packageManagerInternal = LocalServices.getService(
PackageManagerInternal.class);
- if (packageManagerInternal.getPackageUid(source.getPackageName(), 0,
- UserHandle.getUserId(callingUid)) != source.getUid()) {
+
+ // TODO(b/234653108): Clean up this UID/package & cross-user check.
+ // If calling from the system process, allow registering attribution for package from
+ // any user
+ int userId = UserHandle.getUserId((callingUid == Process.SYSTEM_UID ? source.getUid()
+ : callingUid));
+ if (packageManagerInternal.getPackageUid(source.getPackageName(), 0, userId)
+ != source.getUid()) {
throw new SecurityException("Cannot register attribution source for package:"
+ source.getPackageName() + " from uid:" + callingUid);
}