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

Commit fa42461a authored by Nikita Ioffe's avatar Nikita Ioffe
Browse files

Check that only allowed installers can perform a non-staged APEX update

Test: atest CtsStagedInstallHostTestCases
Test: atest GtsStagedInstallHostTestCases
Bug: 187864524
Bug: 189274479
Change-Id: Iab8bcc3892577582e9a50964ef87b89f575e5983
parent 00630da0
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -653,13 +653,20 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
        }

        if (params.isStaged && !isCalledBySystemOrShell(callingUid)) {
            if (mBypassNextStagedInstallerCheck) {
                mBypassNextStagedInstallerCheck = false;
            } else if (!isStagedInstallerAllowed(requestedInstallerPackageName)) {
            if (!mBypassNextStagedInstallerCheck
                    && !isStagedInstallerAllowed(requestedInstallerPackageName)) {
                throw new SecurityException("Installer not allowed to commit staged install");
            }
        }
        if (isApex && !isCalledBySystemOrShell(callingUid)) {
            if (!mBypassNextStagedInstallerCheck
                    && !isStagedInstallerAllowed(requestedInstallerPackageName)) {
                throw new SecurityException(
                        "Installer not allowed to commit non-staged APEX install");
            }
        }

        mBypassNextStagedInstallerCheck = false;
        if (!params.isMultiPackage) {
            // Only system components can circumvent runtime permissions when installing.
            if ((params.installFlags & PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS) != 0