diff options
-rw-r--r-- | services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java | 17 | ||||
-rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 6 |
2 files changed, 15 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java index 8abc8fcd3009..7dee499af37a 100644 --- a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java @@ -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); + } } } } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 08f9bd5be167..1f72b78faf54 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -3785,12 +3785,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)) { |