diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index c5349d76fa75b..d58a6aa53ae70 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -16986,6 +16986,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; } @@ -16994,14 +16995,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); }