From 740634f4f5ee72d69a90a1f599204d5f9b8444c3 Mon Sep 17 00:00:00 2001 From: Nate Jiang Date: Wed, 1 Jun 2022 15:38:33 -0700 Subject: [PATCH] Allow system process register AttributionSource for app from other user Bug: 226322308 Test: TH Change-Id: I397b1384fc067b372d83f32554967a3d09633a9e --- .../server/pm/permission/PermissionManagerService.java | 10 ++++++++-- 1 file 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 a83cb5e37ba2a..2c1be72e02f09 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); }