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

Commit d55320b5 authored by akirilov's avatar akirilov Committed by android-build-merger
Browse files

Merge "RESTRICT AUTOMERGE: Check both self and shared user id package for...

Merge "RESTRICT AUTOMERGE: Check both self and shared user id package for requested permissions." into oc-dev
am: 08d2780e

Change-Id: I3d963182b12d33718157576105d10c7da56ec228
parents 9e6abebb 08d2780e
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -278,6 +278,7 @@ import com.android.server.Watchdog;
import com.android.server.net.NetworkPolicyManagerInternal;
import com.android.server.pm.Installer.InstallerException;
import com.android.server.pm.PermissionsState.PermissionState;
import com.android.server.pm.PackageSetting;
import com.android.server.pm.Settings.DatabaseVersion;
import com.android.server.pm.Settings.VersionInfo;
import com.android.server.pm.dex.DexManager;
@@ -5353,8 +5354,10 @@ public class PackageManagerService extends IPackageManager.Stub
    private static void enforceDeclaredAsUsedAndRuntimeOrDevelopmentPermission(
            PackageParser.Package pkg, BasePermission bp) {
        final PackageSetting pkgSetting = (PackageSetting) pkg.mExtras;
        final PermissionsState permsState = pkgSetting.getPermissionsState();
        int index = pkg.requestedPermissions.indexOf(bp.name);
        if (index == -1) {
        if (!permsState.hasRequestedPermission(bp.name) && index == -1) {
            throw new SecurityException("Package " + pkg.packageName
                    + " has not requested permission " + bp.name);
        }
+8 −0
Original line number Diff line number Diff line
@@ -290,6 +290,14 @@ public final class PermissionsState {
        return false;
    }

    /**
     * Returns whether the state has any known request for the given permission name,
     * whether or not it has been granted.
     */
    public boolean hasRequestedPermission(String name) {
        return mPermissions != null && (mPermissions.get(name) != null);
    }

    /**
     * Gets all permissions for a given device user id regardless if they
     * are install time or runtime permissions.