Merge "Fix retaining of granted permissions when updating of system app." into gingerbread

This commit is contained in:
Dianne Hackborn
2010-10-08 15:21:49 -07:00
committed by Android (Google) Code Review

View File

@@ -3931,17 +3931,22 @@ class PackageManagerService extends IPackageManager.Stub {
allowed = false; allowed = false;
} else if (bp.protectionLevel == PermissionInfo.PROTECTION_SIGNATURE } else if (bp.protectionLevel == PermissionInfo.PROTECTION_SIGNATURE
|| bp.protectionLevel == PermissionInfo.PROTECTION_SIGNATURE_OR_SYSTEM) { || 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) == PackageManager.SIGNATURE_MATCH)
|| (checkSignaturesLP(mPlatformPackage.mSignatures, pkg.mSignatures) || (checkSignaturesLP(mPlatformPackage.mSignatures, pkg.mSignatures)
== PackageManager.SIGNATURE_MATCH); == PackageManager.SIGNATURE_MATCH);
if (bp.protectionLevel == PermissionInfo.PROTECTION_SIGNATURE_OR_SYSTEM) { if (!allowed && bp.protectionLevel
== PermissionInfo.PROTECTION_SIGNATURE_OR_SYSTEM) {
if (isSystemApp(pkg)) { if (isSystemApp(pkg)) {
// For updated system applications, the signatureOrSystem permission // For updated system applications, the signatureOrSystem permission
// is granted only if it had been defined by the original application. // is granted only if it had been defined by the original application.
if (isUpdatedSystemApp(pkg)) { if (isUpdatedSystemApp(pkg)) {
PackageSetting sysPs = mSettings.getDisabledSystemPkg(pkg.packageName); PackageSetting sysPs = mSettings.getDisabledSystemPkg(
if(sysPs.grantedPermissions.contains(perm)) { pkg.packageName);
final GrantedPermissions origGp = sysPs.sharedUser != null
? sysPs.sharedUser : sysPs;
if (origGp.grantedPermissions.contains(perm)) {
allowed = true; allowed = true;
} else { } else {
allowed = false; allowed = false;