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

Commit 4501c11c authored by Nikita Ioffe's avatar Nikita Ioffe
Browse files

Require INSTALL_PACKAGES permission for setInstallAsApex

Bug: 123314638
Fixes: 123314638
Test: apex_e2e_tests
Change-Id: I2a78a5e7496554c0c3eecbfd28f2d793b4ba2196
parent 5be9a228
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -11475,7 +11475,6 @@ package android.content.pm {
    method public void setAppIcon(@Nullable android.graphics.Bitmap);
    method public void setAppLabel(@Nullable CharSequence);
    method public void setAppPackageName(@Nullable String);
    method public void setInstallAsApex();
    method public void setInstallLocation(int);
    method public void setInstallReason(int);
    method public void setMultiPackage();
+1 −0
Original line number Diff line number Diff line
@@ -1558,6 +1558,7 @@ package android.content.pm {
    method public void setDontKillApp(boolean);
    method public void setEnableRollback();
    method @RequiresPermission(android.Manifest.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS) public void setGrantedRuntimePermissions(String[]);
    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setInstallAsApex();
    method public void setInstallAsInstantApp(boolean);
    method public void setInstallAsVirtualPreload();
    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setStaged();
+4 −0
Original line number Diff line number Diff line
@@ -1545,7 +1545,11 @@ public class PackageInstaller {

        /**
         * Set this session to be installing an APEX package.
         *
         * {@hide}
         */
        @SystemApi
        @RequiresPermission(Manifest.permission.INSTALL_PACKAGES)
        public void setInstallAsApex() {
            installFlags |= PackageManager.INSTALL_APEX;
        }
+3 −2
Original line number Diff line number Diff line
@@ -483,11 +483,12 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
            }
        }

        if (params.isStaged) {
        boolean isApex = (params.installFlags & PackageManager.INSTALL_APEX) != 0;
        if (params.isStaged || isApex) {
            mContext.enforceCallingOrSelfPermission(Manifest.permission.INSTALL_PACKAGES, TAG);
        }

        if ((params.installFlags & PackageManager.INSTALL_APEX) != 0) {
        if (isApex) {
            if (!mApexManager.isApexSupported()) {
                throw new IllegalArgumentException(
                    "This device doesn't support the installation of APEX files");