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

Commit c91ff6f0 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Handle invalid package name in isPermissionsReviewRequired

Fixes: 129522923
Test: atest PermissionsHostTests
Change-Id: I2e0e65c5d10b88b5d74ed7eefa80fb381b22ddd7
parent 4c510c08
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -24334,8 +24334,12 @@ public class PackageManagerService extends IPackageManager.Stub
        @Override
        public boolean isPermissionsReviewRequired(String packageName, int userId) {
            synchronized (mPackages) {
                return mPermissionManager.isPermissionsReviewRequired(
                        mPackages.get(packageName), userId);
                final PackageParser.Package pkg = mPackages.get(packageName);
                if (pkg == null) {
                    return false;
                }
                return mPermissionManager.isPermissionsReviewRequired(pkg, userId);
            }
        }
+4 −3
Original line number Diff line number Diff line
@@ -1897,14 +1897,15 @@ public class PermissionManagerService {
        return Boolean.TRUE == granted;
    }

    private boolean isPermissionsReviewRequired(PackageParser.Package pkg, int userId) {
    private boolean isPermissionsReviewRequired(@NonNull PackageParser.Package pkg,
            @UserIdInt int userId) {
        // Permission review applies only to apps not supporting the new permission model.
        if (pkg.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.M) {
            return false;
        }

        // Legacy apps have the permission and get user consent on launch.
        if (pkg == null || pkg.mExtras == null) {
        if (pkg.mExtras == null) {
            return false;
        }
        final PackageSetting ps = (PackageSetting) pkg.mExtras;
@@ -2952,7 +2953,7 @@ public class PermissionManagerService {
            PermissionManagerService.this.systemReady();
        }
        @Override
        public boolean isPermissionsReviewRequired(Package pkg, int userId) {
        public boolean isPermissionsReviewRequired(@NonNull Package pkg, @UserIdInt int userId) {
            return PermissionManagerService.this.isPermissionsReviewRequired(pkg, userId);
        }
        @Override
+3 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.server.pm.permission;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.PermissionInfoFlags;
import android.content.pm.PackageParser;
@@ -65,7 +66,8 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager

    public abstract void systemReady();

    public abstract boolean isPermissionsReviewRequired(PackageParser.Package pkg, int userId);
    public abstract boolean isPermissionsReviewRequired(@NonNull PackageParser.Package pkg,
            @UserIdInt int userId);

    public abstract void grantRuntimePermission(
            @NonNull String permName, @NonNull String packageName, boolean overridePolicy,