From ad9bbd8cee4abfeef687c471e0af5c401c91728e Mon Sep 17 00:00:00 2001 From: Patrick Baumann Date: Wed, 9 Dec 2020 14:11:05 -0800 Subject: [PATCH] Adds caller check to getAllPackages() This change enforces that only system, root or shell may call getAllPackages(), a hidden API that shares all package names regardless of user, instant app or package visibility rules. Bug: 174661955 Test: 'adb shell pm compile -a -m speed' doesn't fail with SecurityException Change-Id: I86a03c46896f21cdbeeda2af150675fe77d61955 --- .../core/java/com/android/server/pm/PackageManagerService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index a702f5ea35828..16c03ad2dde69 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -8946,6 +8946,7 @@ public class PackageManagerService extends IPackageManager.Stub @Override public List getAllPackages() { + enforceSystemOrRootOrShell("getAllPackages is limited to privileged callers"); final int callingUid = Binder.getCallingUid(); final int callingUserId = UserHandle.getUserId(callingUid); synchronized (mLock) {