diff options
4 files changed, 9 insertions, 54 deletions
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index 7fc9a69a1f92..acceed05943c 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -285,8 +285,7 @@ public class ApplicationPackageManager extends PackageManager { public PermissionInfo getPermissionInfo(String name, int flags) throws NameNotFoundException { try { - PermissionInfo pi = mPM.getPermissionInfo(name, - mContext.getOpPackageName(), flags); + PermissionInfo pi = mPM.getPermissionInfo(name, flags); if (pi != null) { return pi; } diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index 4b44a177ec20..e800e8857cb4 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -72,7 +72,7 @@ interface IPackageManager { String[] currentToCanonicalPackageNames(in String[] names); String[] canonicalToCurrentPackageNames(in String[] names); - PermissionInfo getPermissionInfo(String name, String packageName, int flags); + PermissionInfo getPermissionInfo(String name, int flags); ParceledListSlice queryPermissionsByGroup(String group, int flags); diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java index da196e2c7902..064ca58dee96 100644 --- a/services/core/java/com/android/server/am/BroadcastQueue.java +++ b/services/core/java/com/android/server/am/BroadcastQueue.java @@ -802,7 +802,7 @@ public final class BroadcastQueue { IPackageManager pm = AppGlobals.getPackageManager(); for (int i = perms.length-1; i >= 0; i--) { try { - PermissionInfo pi = pm.getPermissionInfo(perms[i], "android", 0); + PermissionInfo pi = pm.getPermissionInfo(perms[i], 0); if ((pi.protectionLevel & (PermissionInfo.PROTECTION_MASK_BASE | PermissionInfo.PROTECTION_FLAG_PRIVILEGED)) != PermissionInfo.PROTECTION_SIGNATURE) { diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 5b24d8b24f3b..1242daa48bee 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -3997,62 +3997,18 @@ public class PackageManagerService extends IPackageManager.Stub } @Override - public PermissionInfo getPermissionInfo(String name, String packageName, int flags) { - final int callingUid = Binder.getCallingUid(); - if (getInstantAppPackageName(callingUid) != null) { + public PermissionInfo getPermissionInfo(String name, int flags) { + if (getInstantAppPackageName(Binder.getCallingUid()) != null) { return null; } // reader synchronized (mPackages) { final BasePermission p = mSettings.mPermissions.get(name); - // If the caller is an app that targets pre 26 SDK drop protection flags. - final PermissionInfo permissionInfo = generatePermissionInfo(p, flags); - permissionInfo.protectionLevel = adjustPermissionProtectionFlagsLPr( - permissionInfo.protectionLevel, packageName, callingUid); - return permissionInfo; - } - } - - private int adjustPermissionProtectionFlagsLPr(int protectionLevel, - String packageName, int uid) { - // Signature permission flags area always reported - final int protectionLevelMasked = protectionLevel - & (PermissionInfo.PROTECTION_NORMAL - | PermissionInfo.PROTECTION_DANGEROUS - | PermissionInfo.PROTECTION_SIGNATURE); - if (protectionLevelMasked == PermissionInfo.PROTECTION_SIGNATURE) { - return protectionLevel; - } - - // System sees all flags. - final int appId = UserHandle.getAppId(uid); - if (appId == Process.SYSTEM_UID || appId == Process.ROOT_UID - || appId == Process.SHELL_UID) { - return protectionLevel; - } - - // Normalize package name to handle renamed packages and static libs - packageName = resolveInternalPackageNameLPr(packageName, - PackageManager.VERSION_CODE_HIGHEST); - - // Apps that target O see flags for all protection levels. - final PackageSetting ps = mSettings.mPackages.get(packageName); - if (ps == null) { - return protectionLevel; - } - if (ps.appId != appId) { - return protectionLevel; - } - - final PackageParser.Package pkg = mPackages.get(packageName); - if (pkg == null) { - return protectionLevel; - } - if (pkg.applicationInfo.targetSdkVersion < Build.VERSION_CODES.O) { - return protectionLevelMasked; + if (p != null) { + return generatePermissionInfo(p, flags); + } + return null; } - - return protectionLevel; } @Override |