summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/pm/PackageManagerService.java
diff options
context:
space:
mode:
authorChristopher Tate <ctate@google.com>2013-07-29 14:20:15 -0700
committerChristopher Tate <ctate@google.com>2013-07-29 17:13:35 -0700
commit072252cd486b260192f26dfb8e67ffd454b10a59 (patch)
treef1b54f7c410c19a8758d55fc36dbdeb5d2b1b1ba /services/java/com/android/server/pm/PackageManagerService.java
parentd8501485e30c1184292f15349b9e439343ff5b60 (diff)
Fix permission privilege w.r.t. updated system apps
Note that it is *intentional* that even a privileged app cannot add new privileged permissions via unbundled update. The set of privileged permissions granted is strictly limited to those used by the apk file installed as privileged. Bug 10027033 Change-Id: I974bae0671c1962e4526d51dd9a0c53bcd27323e
Diffstat (limited to 'services/java/com/android/server/pm/PackageManagerService.java')
-rwxr-xr-xservices/java/com/android/server/pm/PackageManagerService.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index 7a0121993893..cd2dc211273f 100755
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -5383,7 +5383,7 @@ public class PackageManagerService extends IPackageManager.Stub {
== PackageManager.SIGNATURE_MATCH);
if (!allowed && (bp.protectionLevel
& PermissionInfo.PROTECTION_FLAG_SYSTEM) != 0) {
- if (isPrivilegedApp(pkg)) {
+ if (isSystemApp(pkg)) {
// For updated system applications, a system permission
// is granted only if it had been defined by the original application.
if (isUpdatedSystemApp(pkg)) {
@@ -5391,7 +5391,11 @@ public class PackageManagerService extends IPackageManager.Stub {
.getDisabledSystemPkgLPr(pkg.packageName);
final GrantedPermissions origGp = sysPs.sharedUser != null
? sysPs.sharedUser : sysPs;
+
if (origGp.grantedPermissions.contains(perm)) {
+ // If the original was granted this permission, we take
+ // that grant decision as read and propagate it to the
+ // update.
allowed = true;
} else {
// The system apk may have been updated with an older
@@ -5413,7 +5417,7 @@ public class PackageManagerService extends IPackageManager.Stub {
}
}
} else {
- allowed = true;
+ allowed = isPrivilegedApp(pkg);
}
}
}