Revert "Report permission flags for all protections based on SDK"

This reverts commit 852cf98cb8.

Change-Id: I62763bf85ec95a02a245c6b503aa34bb0e9d997a
This commit is contained in:
Bart Sears
2017-07-28 05:05:38 +00:00
parent 852cf98cb8
commit 784b56e1e6
4 changed files with 9 additions and 54 deletions

View File

@@ -281,8 +281,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;
}

View File

@@ -71,7 +71,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);

View File

@@ -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) {

View File

@@ -3996,64 +3996,20 @@ 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;
if (p != null) {
return generatePermissionInfo(p, flags);
}
return null;
}
}
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;
}
return protectionLevel;
}
@Override
public @Nullable ParceledListSlice<PermissionInfo> queryPermissionsByGroup(String group,
int flags) {