Merge "Fix retaining of granted permissions when updating of system app." into gingerbread
This commit is contained in:
committed by
Android (Google) Code Review
commit
62d8874eb7
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user