summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Svetoslav Ganov <svetoslavganov@google.com> 2015-11-05 02:23:44 +0000
committer android-build-merger <android-build-merger@google.com> 2015-11-05 02:23:44 +0000
commita9b62e13305d9cb43f53831f0b92d72bd490c1ae (patch)
tree2e4095e00fd72793ff849af326061cd3b4b40570
parent110418030167702f29fa686616d68fc62f9c0995 (diff)
parent035374d7a29b4e0b0bc71bdfb3555b2e547ce1da (diff)
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
-rw-r--r--services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java17
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java6
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 7bca8670e1a1..1eff35a2f104 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -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)) {