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