Merge "Enforce weaker grant if app is default handler for miltiple action"
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user