summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2010-10-08 15:21:49 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-10-08 15:21:49 -0700
commit62d8874eb74045b37140857ea3b31f198f0adffa (patch)
tree29459741151cb1cc6cb22df7e999681ffeb2c394 /services
parentdb56b9bd39e739474684987b83f386f50596aa5d (diff)
parent2fe979fc611263965d25f9fb0d484fac99f4ef83 (diff)
downloadframeworks_base-62d8874eb74045b37140857ea3b31f198f0adffa.zip
frameworks_base-62d8874eb74045b37140857ea3b31f198f0adffa.tar.gz
frameworks_base-62d8874eb74045b37140857ea3b31f198f0adffa.tar.bz2
Merge "Fix retaining of granted permissions when updating of system app." into gingerbread
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/PackageManagerService.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java
index ce0e79f..37b4c1d 100644
--- a/services/java/com/android/server/PackageManagerService.java
+++ b/services/java/com/android/server/PackageManagerService.java
@@ -3931,17 +3931,22 @@ class PackageManagerService extends IPackageManager.Stub {
allowed = false;
} else if (bp.protectionLevel == PermissionInfo.PROTECTION_SIGNATURE
|| bp.protectionLevel == PermissionInfo.PROTECTION_SIGNATURE_OR_SYSTEM) {
- allowed = (checkSignaturesLP(bp.packageSetting.signatures.mSignatures, pkg.mSignatures)
+ allowed = (checkSignaturesLP(
+ bp.packageSetting.signatures.mSignatures, pkg.mSignatures)
== PackageManager.SIGNATURE_MATCH)
|| (checkSignaturesLP(mPlatformPackage.mSignatures, pkg.mSignatures)
== PackageManager.SIGNATURE_MATCH);
- if (bp.protectionLevel == PermissionInfo.PROTECTION_SIGNATURE_OR_SYSTEM) {
+ if (!allowed && bp.protectionLevel
+ == PermissionInfo.PROTECTION_SIGNATURE_OR_SYSTEM) {
if (isSystemApp(pkg)) {
// For updated system applications, the signatureOrSystem permission
// is granted only if it had been defined by the original application.
if (isUpdatedSystemApp(pkg)) {
- PackageSetting sysPs = mSettings.getDisabledSystemPkg(pkg.packageName);
- if(sysPs.grantedPermissions.contains(perm)) {
+ PackageSetting sysPs = mSettings.getDisabledSystemPkg(
+ pkg.packageName);
+ final GrantedPermissions origGp = sysPs.sharedUser != null
+ ? sysPs.sharedUser : sysPs;
+ if (origGp.grantedPermissions.contains(perm)) {
allowed = true;
} else {
allowed = false;