summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/pm
diff options
context:
space:
mode:
authorNick Kralevich <nnk@google.com>2013-03-19 15:50:21 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2013-03-19 15:50:21 +0000
commitb97e5eb05c2cab3d2dc345bfb708e0a40232ea97 (patch)
tree527145facc190e6b5a2fb4e026039f881c4f6b57 /services/java/com/android/server/pm
parent92eb0073bff4e9c9d753d24f46fef2039f4bb6e5 (diff)
parentf5eaf95bc5a3240b315376a284e6ee4a60cc5145 (diff)
am f5eaf95b: am 515c20be: Merge "PackageManagerService: honor requestedPermissionsRequired" into jb-mr2-dev
* commit 'f5eaf95bc5a3240b315376a284e6ee4a60cc5145': PackageManagerService: honor requestedPermissionsRequired
Diffstat (limited to 'services/java/com/android/server/pm')
-rw-r--r--services/java/com/android/server/pm/PackageManagerService.java12
1 files changed, 5 insertions, 7 deletions
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index 13f12c7a9b3e..6b63fb5637e2 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -5102,7 +5102,7 @@ public class PackageManagerService extends IPackageManager.Stub {
final int N = pkg.requestedPermissions.size();
for (int i=0; i<N; i++) {
final String name = pkg.requestedPermissions.get(i);
- //final boolean required = pkg.requestedPermssionsRequired.get(i);
+ final boolean required = pkg.requestedPermissionsRequired.get(i);
final BasePermission bp = mSettings.mPermissions.get(name);
if (DEBUG_INSTALL) {
if (gp != ps) {
@@ -5116,7 +5116,9 @@ public class PackageManagerService extends IPackageManager.Stub {
final int level = bp.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE;
if (level == PermissionInfo.PROTECTION_NORMAL
|| level == PermissionInfo.PROTECTION_DANGEROUS) {
- allowed = true;
+ // If the permission is required, or it's optional and was previously
+ // granted to the application, then allow it. Otherwise deny.
+ allowed = (required || origPermissions.contains(perm));
} else if (bp.packageSetting == null) {
// This permission is invalid; skip it.
allowed = false;
@@ -5166,11 +5168,7 @@ public class PackageManagerService extends IPackageManager.Stub {
& PermissionInfo.PROTECTION_FLAG_DEVELOPMENT) != 0) {
// For development permissions, a development permission
// is granted only if it was already granted.
- if (origPermissions.contains(perm)) {
- allowed = true;
- } else {
- allowed = false;
- }
+ allowed = origPermissions.contains(perm);
}
if (allowed) {
allowedSig = true;