Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d71ba0bd authored by Rhed Jao's avatar Rhed Jao Committed by Automerger Merge Worker
Browse files

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

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

Change-Id: I1fdb6c53cec00ba6c83ab9efd6ce8f60c66d0205
parents 1aefff10 2006f7f5
Loading
Loading
Loading
Loading
+5 −2
Original line number Original line Diff line number Diff line
@@ -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);
                }
                }