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

Commit 8f808b1c authored by Joanne Chung's avatar Joanne Chung Committed by Automerger Merge Worker
Browse files

Merge "Allow update owner to access InstallConstraints APIs" into udc-dev am:...

Merge "Allow update owner to access InstallConstraints APIs" into udc-dev am: 08d9484b am: 7b9aac57 am: 9f8c2c02

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



Change-Id: I26779560b10ddad001e9ad8a3522362dd59e5e4b
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 003116f9 9f8c2c02
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ import com.android.server.SystemConfig;
import com.android.server.SystemService;
import com.android.server.SystemServiceManager;
import com.android.server.pm.parsing.PackageParser2;
import com.android.server.pm.pkg.PackageStateInternal;
import com.android.server.pm.utils.RequestThrottle;

import libcore.io.IoUtils;
@@ -1308,6 +1309,13 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
        }
    }

    private boolean isValidForInstallConstraints(PackageStateInternal ps,
            String installerPackageName) {
        return TextUtils.equals(ps.getInstallSource().mInstallerPackageName, installerPackageName)
                || TextUtils.equals(ps.getInstallSource().mUpdateOwnerPackageName,
                installerPackageName);
    }

    private CompletableFuture<InstallConstraintsResult> checkInstallConstraintsInternal(
            String installerPackageName, List<String> packageNames,
            InstallConstraints constraints, long timeoutMillis) {
@@ -1324,8 +1332,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
        if (!PackageManagerServiceUtils.isSystemOrRootOrShell(callingUid)) {
            for (var packageName : packageNames) {
                var ps = snapshot.getPackageStateInternal(packageName);
                if (ps == null || !TextUtils.equals(
                        ps.getInstallSource().mInstallerPackageName, installerPackageName)) {
                if (ps == null || !isValidForInstallConstraints(ps, installerPackageName)) {
                    throw new SecurityException("Caller has no access to package " + packageName);
                }
            }