diff options
author | Christopher Tate <ctate@google.com> | 2013-07-29 14:20:15 -0700 |
---|---|---|
committer | Christopher Tate <ctate@google.com> | 2013-07-29 17:13:35 -0700 |
commit | 072252cd486b260192f26dfb8e67ffd454b10a59 (patch) | |
tree | f1b54f7c410c19a8758d55fc36dbdeb5d2b1b1ba /services/java/com/android/server/pm/PackageManagerService.java | |
parent | d8501485e30c1184292f15349b9e439343ff5b60 (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-x | services/java/com/android/server/pm/PackageManagerService.java | 8 |
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); } } } |