Merge "Enforce weaker grant if app is default handler for miltiple action"
am: 035374d7a2
* commit '035374d7a29b4e0b0bc71bdfb3555b2e547ce1da':
Enforce weaker grant if app is default handler for miltiple action
This commit is contained in:
@@ -842,8 +842,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;
|
||||
@@ -854,6 +854,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3718,12 +3718,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