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

Commit 049a3539 authored by Essence Cain's avatar Essence Cain Committed by Android (Google) Code Review
Browse files

Merge "Modify isEmergencyInstallEnabled() to check for priv-only permissions...

Merge "Modify isEmergencyInstallEnabled() to check for priv-only permissions that allow apps to update themselves and to verify for system apps before triggering an emergency install." into main
parents 501f2970 b2bee16b
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -964,13 +964,22 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {

    private boolean isEmergencyInstallerEnabled(String packageName, Computer snapshot) {
        final PackageStateInternal ps = snapshot.getPackageStateInternal(packageName);
        if (ps == null || ps.getPkg() == null) {
        if (ps == null || ps.getPkg() == null || !ps.isSystem()) {
            return false;
        }
        int uid = UserHandle.getUid(userId, ps.getAppId());
        String emergencyInstaller = ps.getPkg().getEmergencyInstaller();
        if (emergencyInstaller == null || !ArrayUtils.contains(
                snapshot.getPackagesForUid(mInstallerUid),
                emergencyInstaller)) {
                snapshot.getPackagesForUid(mInstallerUid), emergencyInstaller)) {
            return false;
        }
        // Only system installers can have an emergency installer
        if (PackageManager.PERMISSION_GRANTED
                != snapshot.checkUidPermission(Manifest.permission.INSTALL_PACKAGES, uid)
                && PackageManager.PERMISSION_GRANTED
                != snapshot.checkUidPermission(Manifest.permission.INSTALL_PACKAGE_UPDATES, uid)
                && PackageManager.PERMISSION_GRANTED
                != snapshot.checkUidPermission(Manifest.permission.INSTALL_SELF_UPDATES, uid)) {
            return false;
        }
        return (snapshot.checkUidPermission(Manifest.permission.EMERGENCY_INSTALL_PACKAGES,