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

Commit 28c49481 authored by Hongming Jin's avatar Hongming Jin Committed by Android (Google) Code Review
Browse files

Merge "Check both self and shared user id package for requested permissions."

parents c2df6504 2f79959c
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import android.util.Slog;

import com.android.server.pm.DumpState;
import com.android.server.pm.PackageManagerService;
import com.android.server.pm.PackageSetting;
import com.android.server.pm.PackageSettingBase;

import org.xmlpull.v1.XmlPullParser;
@@ -374,8 +375,10 @@ public final class BasePermission {
    }

    public void enforceDeclaredUsedAndRuntimeOrDevelopment(PackageParser.Package pkg) {
        final PackageSetting pkgSetting = (PackageSetting) pkg.mExtras;
        final PermissionsState permsState = pkgSetting.getPermissionsState();
        int index = pkg.requestedPermissions.indexOf(name);
        if (index == -1) {
        if (!permsState.hasRequestedPermission(name) && index == -1) {
            throw new SecurityException("Package " + pkg.packageName
                    + " has not requested permission " + name);
        }
+8 −1
Original line number Diff line number Diff line
@@ -20,9 +20,9 @@ import android.content.pm.PackageManager;
import android.os.UserHandle;
import android.util.ArrayMap;
import android.util.ArraySet;

import android.util.SparseArray;
import android.util.SparseBooleanArray;

import com.android.internal.util.ArrayUtils;

import java.util.ArrayList;
@@ -290,6 +290,13 @@ 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.