Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f84101e authored by Hai Zhang's avatar Hai Zhang Committed by Android (Google) Code Review
Browse files

Merge "Revert "Revert "Update signature permissions when package signing is changed.""" into main

parents abe8268d 6b955f6c
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -867,12 +867,14 @@ public final class SigningDetails implements Parcelable {
            return false;
        }
        // The capabilities for the past signing certs must match as well.
        if (mPastSigningCertificates != null) {
            for (int i = 0; i < mPastSigningCertificates.length; i++) {
                if (mPastSigningCertificates[i].getFlags()
                        != that.mPastSigningCertificates[i].getFlags()) {
                    return false;
                }
            }
        }
        return true;
    }

+9 −2
Original line number Diff line number Diff line
@@ -390,7 +390,14 @@ class AppIdPermissionPolicy : SchemePolicy() {
        packageState: PackageState,
        changedPermissionNames: MutableIndexedSet<String>
    ) {
        packageState.androidPackage!!.permissions.forEachIndexed { _, parsedPermission ->
        val androidPackage = packageState.androidPackage!!
        // This may not be the same package as the old permission because the old permission owner
        // can be different, hence using this somewhat strange name to prevent misuse.
        val oldNewPackage = oldState.externalState.packageStates[packageState.packageName]
            ?.androidPackage
        val isPackageSigningChanged = oldNewPackage != null &&
                androidPackage.signingDetails != oldNewPackage.signingDetails
        androidPackage.permissions.forEachIndexed { _, parsedPermission ->
            val newPermissionInfo = PackageInfoUtils.generatePermissionInfo(
                parsedPermission, PackageManager.GET_META_DATA.toLong()
            )!!
@@ -520,7 +527,7 @@ class AppIdPermissionPolicy : SchemePolicy() {
                    newPackageName != oldPermission.packageName ||
                    newPermission.protectionLevel != oldPermission.protectionLevel || (
                        oldPermission.isReconciled && (
                            (
                            (newPermission.isSignature && isPackageSigningChanged) || (
                                newPermission.isKnownSigner &&
                                    newPermission.knownCerts != oldPermission.knownCerts
                            ) || (