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

Commit bfb2f7f5 authored by Philip P. Moltmann's avatar Philip P. Moltmann Committed by Automerger Merge Worker
Browse files

Merge "Don't check apex when granting priv permission unless needed" into...

Merge "Don't check apex when granting priv permission unless needed" into rvc-dev am: 19f8283a am: 30be4d08 am: a459846f am: bffba8c5

Change-Id: I7aa18e8587a26fed3ece96d3211493e9a2392a61
parents babf8b2c bffba8c5
Loading
Loading
Loading
Loading
+40 −36
Original line number Diff line number Diff line
@@ -3319,17 +3319,19 @@ public class PermissionManagerService extends IPermissionManager.Stub {
        if (!privappPermissionsDisable && privilegedPermission && pkg.isPrivileged()
                && !platformPackage && platformPermission) {
            if (!hasPrivappWhitelistEntry(perm, pkg)) {
                ApexManager apexMgr = ApexManager.getInstance();
                String apexContainingPkg = apexMgr.getActiveApexPackageNameContainingPackage(pkg);

                // Only enforce whitelist this on boot
                if (!mSystemReady
                        // Updated system apps do not need to be whitelisted
                        && !pkgSetting.getPkgState().isUpdatedSystemApp()
                        && !pkgSetting.getPkgState().isUpdatedSystemApp()) {
                    ApexManager apexMgr = ApexManager.getInstance();
                    String apexContainingPkg = apexMgr.getActiveApexPackageNameContainingPackage(
                            pkg);

                    // Apps that are in updated apexs' do not need to be whitelisted
                        && (apexContainingPkg == null || apexMgr.isFactory(
                        apexMgr.getPackageInfo(apexContainingPkg, MATCH_ACTIVE_PACKAGE)))) {
                    // it's only a reportable violation if the permission isn't explicitly denied
                    if (apexContainingPkg == null || apexMgr.isFactory(
                            apexMgr.getPackageInfo(apexContainingPkg, MATCH_ACTIVE_PACKAGE))) {
                        // it's only a reportable violation if the permission isn't explicitly
                        // denied
                        ArraySet<String> deniedPermissions = null;
                        if (pkg.isVendor()) {
                            deniedPermissions = SystemConfig.getInstance()
@@ -3356,12 +3358,14 @@ public class PermissionManagerService extends IPermissionManager.Stub {
                                    mPrivappPermissionsViolations = new ArraySet<>();
                                }
                                mPrivappPermissionsViolations.add(
                                    pkg.getPackageName() + " (" + pkg.getCodePath() + "): " + perm);
                                        pkg.getPackageName() + " (" + pkg.getCodePath() + "): "
                                                + perm);
                            }
                        } else {
                            return false;
                        }
                    }
                }
                if (RoSystemProperties.CONTROL_PRIVAPP_PERMISSIONS_ENFORCE) {
                    return false;
                }