From fb43352f1c853eb51ce8ba4922ec75a452f0b1de Mon Sep 17 00:00:00 2001 From: Jackal Guo Date: Mon, 22 Feb 2021 11:32:42 +0800 Subject: [PATCH] Enfore cross-user permission to getPackagesForUid Apps could use getPackagesForUid with given UID to query if there is a installed and get its package name across user. Expect for package visibility filtering, we also need to ensure across-user calls come with appropriate permission. Bug: 167654926 Test: atest ApplicationVisibilityTest Change-Id: I435e0160128591b50ddd5998e7c558b78aaca9b1 --- .../java/com/android/server/pm/PackageManagerService.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 16966d4de4e62..b9828e20db1f5 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -9167,6 +9167,11 @@ public class PackageManagerService extends IPackageManager.Stub */ @Override public String[] getPackagesForUid(int uid) { + final int callingUid = Binder.getCallingUid(); + final int userId = UserHandle.getUserId(uid); + enforceCrossUserOrProfilePermission(callingUid, userId, + /* requireFullPermission */ false, + /* checkShell */ false, "getPackagesForUid"); return snapshotComputer().getPackagesForUid(uid); }