diff options
author | Dianne Hackborn <hackbod@google.com> | 2010-10-08 15:21:49 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-10-08 15:21:49 -0700 |
commit | 62d8874eb74045b37140857ea3b31f198f0adffa (patch) | |
tree | 29459741151cb1cc6cb22df7e999681ffeb2c394 /services | |
parent | db56b9bd39e739474684987b83f386f50596aa5d (diff) | |
parent | 2fe979fc611263965d25f9fb0d484fac99f4ef83 (diff) | |
download | frameworks_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.java | 13 |
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; |