diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 00a68a08cb18d..80361e1688b41 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -16915,6 +16915,7 @@ public class PackageManagerService extends IPackageManager.Stub @Override public void setInstallerPackageName(String targetPackage, String installerPackageName) { final int callingUid = Binder.getCallingUid(); + final int callingUserId = UserHandle.getUserId(callingUid); if (getInstantAppPackageName(callingUid) != null) { return; } @@ -16923,14 +16924,16 @@ public class PackageManagerService extends IPackageManager.Stub PackageSetting targetPackageSetting = mSettings.getPackageLPr(targetPackage); if (targetPackageSetting == null || shouldFilterApplicationLocked( - targetPackageSetting, callingUid, UserHandle.getUserId(callingUid))) { + targetPackageSetting, callingUid, callingUserId)) { throw new IllegalArgumentException("Unknown target package: " + targetPackage); } PackageSetting installerPackageSetting; if (installerPackageName != null) { installerPackageSetting = mSettings.getPackageLPr(installerPackageName); - if (installerPackageSetting == null) { + if (installerPackageSetting == null + || shouldFilterApplicationLocked( + installerPackageSetting, callingUid, callingUserId)) { throw new IllegalArgumentException("Unknown installer package: " + installerPackageName); }