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

Commit c0927dd3 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Send package to permission check"

parents 1982a109 3c71449d
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -5217,7 +5217,13 @@ public class PackageManagerService extends IPackageManager.Stub
    @Override
    public int checkUidPermission(String permName, int uid) {
        return mPermissionManager.checkUidPermission(permName, uid, getCallingUid());
        synchronized (mPackages) {
            final String[] packageNames = getPackagesForUid(uid);
            final PackageParser.Package pkg = (packageNames != null && packageNames.length > 0)
                    ? mPackages.get(packageNames[0])
                    : null;
            return mPermissionManager.checkUidPermission(permName, pkg, uid, getCallingUid());
        }
    }
    @Override
+2 −1
Original line number Diff line number Diff line
@@ -146,7 +146,8 @@ public abstract class PermissionManagerInternal {

    public abstract int checkPermission(@NonNull String permName, @NonNull String packageName,
            int callingUid, int userId);
    public abstract int checkUidPermission(String permName, int uid, int callingUid);
    public abstract int checkUidPermission(@NonNull String permName,
            @Nullable PackageParser.Package pkg, int uid, int callingUid);

    /**
     * Enforces the request is from the system or an app that has INTERACT_ACROSS_USERS
+8 −21
Original line number Diff line number Diff line
@@ -242,7 +242,8 @@ public class PermissionManagerService {
        return PackageManager.PERMISSION_DENIED;
    }

    private int checkUidPermission(String permName, int uid, int callingUid) {
    private int checkUidPermission(String permName, PackageParser.Package pkg, int uid,
            int callingUid) {
        final int callingUserId = UserHandle.getUserId(callingUid);
        final boolean isCallerInstantApp =
                mPackageManagerInt.getInstantAppPackageName(callingUid) != null;
@@ -253,29 +254,14 @@ public class PermissionManagerService {
            return PackageManager.PERMISSION_DENIED;
        }

        final String[] packages = mContext.getPackageManager().getPackagesForUid(uid);
        if (packages != null && packages.length > 0) {
            PackageParser.Package pkg = null;
            for (String packageName : packages) {
                pkg = mPackageManagerInt.getPackage(packageName);
        if (pkg != null) {
                    break;
                }
            }
            if (pkg == null) {
Slog.e(TAG, "TODD: No package not found; UID: " + uid);
Slog.e(TAG, "TODD: Packages: " + Arrays.toString(packages));
                return PackageManager.PERMISSION_DENIED;
            }
            if (pkg.mSharedUserId != null) {
                if (isCallerInstantApp) {
                    return PackageManager.PERMISSION_DENIED;
                }
            } else {
                if (mPackageManagerInt.filterAppAccess(pkg, callingUid, callingUserId)) {
            } else if (mPackageManagerInt.filterAppAccess(pkg, callingUid, callingUserId)) {
                return PackageManager.PERMISSION_DENIED;
            }
            }
            final PermissionsState permissionsState =
                    ((PackageSetting) pkg.mExtras).getPermissionsState();
            if (permissionsState.hasPermission(permName, userId)) {
@@ -2068,8 +2054,9 @@ Slog.e(TAG, "TODD: Packages: " + Arrays.toString(packages));
                    permName, packageName, callingUid, userId);
        }
        @Override
        public int checkUidPermission(String permName, int uid, int callingUid) {
            return PermissionManagerService.this.checkUidPermission(permName, uid, callingUid);
        public int checkUidPermission(String permName, PackageParser.Package pkg, int uid,
                int callingUid) {
            return PermissionManagerService.this.checkUidPermission(permName, pkg, uid, callingUid);
        }
        @Override
        public PermissionGroupInfo getPermissionGroupInfo(String groupName, int flags,