Merge "Fix side channel leakage from the api of setInstallerPackageName" into sc-dev am: 2006f7f5e6

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14842883

Change-Id: I968d115089095b0a67a3b926902627dcb0da87f9
This commit is contained in:
Rhed Jao
2021-06-08 04:17:31 +00:00
committed by Automerger Merge Worker

View File

@@ -16986,6 +16986,7 @@ public class PackageManagerService extends IPackageManager.Stub
@Override @Override
public void setInstallerPackageName(String targetPackage, String installerPackageName) { public void setInstallerPackageName(String targetPackage, String installerPackageName) {
final int callingUid = Binder.getCallingUid(); final int callingUid = Binder.getCallingUid();
final int callingUserId = UserHandle.getUserId(callingUid);
if (getInstantAppPackageName(callingUid) != null) { if (getInstantAppPackageName(callingUid) != null) {
return; return;
} }
@@ -16994,14 +16995,16 @@ public class PackageManagerService extends IPackageManager.Stub
PackageSetting targetPackageSetting = mSettings.getPackageLPr(targetPackage); PackageSetting targetPackageSetting = mSettings.getPackageLPr(targetPackage);
if (targetPackageSetting == null if (targetPackageSetting == null
|| shouldFilterApplicationLocked( || shouldFilterApplicationLocked(
targetPackageSetting, callingUid, UserHandle.getUserId(callingUid))) { targetPackageSetting, callingUid, callingUserId)) {
throw new IllegalArgumentException("Unknown target package: " + targetPackage); throw new IllegalArgumentException("Unknown target package: " + targetPackage);
} }
PackageSetting installerPackageSetting; PackageSetting installerPackageSetting;
if (installerPackageName != null) { if (installerPackageName != null) {
installerPackageSetting = mSettings.getPackageLPr(installerPackageName); installerPackageSetting = mSettings.getPackageLPr(installerPackageName);
if (installerPackageSetting == null) { if (installerPackageSetting == null
|| shouldFilterApplicationLocked(
installerPackageSetting, callingUid, callingUserId)) {
throw new IllegalArgumentException("Unknown installer package: " throw new IllegalArgumentException("Unknown installer package: "
+ installerPackageName); + installerPackageName);
} }