Merge "Enforce weaker grant if app is default handler for miltiple action"

This commit is contained in:
Svetoslav Ganov
2015-11-05 02:19:00 +00:00
committed by Gerrit Code Review
2 changed files with 15 additions and 8 deletions

View File

@@ -819,8 +819,8 @@ final class DefaultPermissionGrantPolicy {
mService.grantRuntimePermission(pkg.packageName, permission, userId);
if (DEBUG) {
Log.i(TAG, "Granted " + permission + " to default handler "
+ pkg.packageName);
Log.i(TAG, "Granted " + (systemFixed ? "fixed " : "not fixed ")
+ permission + " to default handler " + pkg.packageName);
}
int newFlags = PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT;
@@ -831,6 +831,19 @@ final class DefaultPermissionGrantPolicy {
mService.updatePermissionFlags(permission, pkg.packageName,
newFlags, newFlags, userId);
}
// If a component gets a permission for being the default handler A
// and also default handler B, we grant the weaker grant form.
if ((flags & PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT) != 0
&& (flags & PackageManager.FLAG_PERMISSION_SYSTEM_FIXED) != 0
&& !systemFixed) {
if (DEBUG) {
Log.i(TAG, "Granted not fixed " + permission + " to default handler "
+ pkg.packageName);
}
mService.updatePermissionFlags(permission, pkg.packageName,
PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, 0, userId);
}
}
}
}

View File

@@ -3716,12 +3716,6 @@ public class PackageManagerService extends IPackageManager.Stub {
PermissionsState permissionsState = sb.getPermissionsState();
// Only the package manager can change flags for system component permissions.
final int flags = permissionsState.getPermissionFlags(bp.name, userId);
if ((flags & PackageManager.FLAG_PERMISSION_SYSTEM_FIXED) != 0) {
return;
}
boolean hadState = permissionsState.getRuntimePermissionState(name, userId) != null;
if (permissionsState.updatePermissionFlags(bp, userId, flagMask, flagValues)) {