Merge "Fix side channel leakage from the api of setInstallerPackageName" into sc-dev

This commit is contained in:
Rhed Jao
2021-06-08 04:10:24 +00:00
committed by Android (Google) Code Review

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);
} }