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

Commit 48feba95 authored by Sam Mortimer's avatar Sam Mortimer Committed by Mohammed Althaf T
Browse files

Reset all package signatures on boot

Can be used to make a special build that resets all
package signatures without wiping any data.

Change-Id: Iff65f2ed3c9d0f80be7221ff90803eda4732cac0
parent b88bb5ca
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -1408,7 +1408,14 @@ final class InstallPackageHelper {
                final KeySetManagerService ksms = mPm.mSettings.getKeySetManagerService();
                final SharedUserSetting signatureCheckSus = mPm.mSettings.getSharedUserSettingLPr(
                        signatureCheckPs);
                if (ksms.shouldCheckUpgradeKeySetLocked(signatureCheckPs, signatureCheckSus,
                if (mPm.mResetSignatures) {
                    Slog.d(TAG, "resetting signatures on package " + parsedPackage.getPackageName());
                    signatureCheckPs.setSigningDetails(parsedPackage.getSigningDetails());
                    if (signatureCheckSus != null) {
                        signatureCheckSus.signatures.mSigningDetails =
                                parsedPackage.getSigningDetails();
                    }
                } else if (ksms.shouldCheckUpgradeKeySetLocked(signatureCheckPs, signatureCheckSus,
                        scanFlags)) {
                    if (!ksms.checkUpgradeKeySetLocked(signatureCheckPs, parsedPackage)) {
                        throw new PrepareFailure(INSTALL_FAILED_UPDATE_INCOMPATIBLE, "Package "
+7 −0
Original line number Diff line number Diff line
@@ -370,6 +370,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService

    static final boolean HIDE_EPHEMERAL_APIS = false;

    private static final boolean RESET_ALL_PACKAGE_SIGNATURES_ON_BOOT = true;

    static final String PRECOMPILE_LAYOUTS = "pm.precompile_layouts";

    private static final int RADIO_UID = Process.PHONE_UID;
@@ -719,6 +721,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
    final ProtectedPackages mProtectedPackages;

    private boolean mFirstBoot;
    boolean mResetSignatures;

    final boolean mIsEngBuild;
    private final boolean mIsUserDebugBuild;
@@ -2320,6 +2323,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
            mShouldStopSystemPackagesByDefault = mContext.getResources()
                    .getBoolean(R.bool.config_stopSystemPackagesByDefault);

            mResetSignatures = RESET_ALL_PACKAGE_SIGNATURES_ON_BOOT;

            final int[] userIds = mUserManager.getUserIds();
            PackageParser2 packageParser = mInjector.getScanningCachingPackageParser();
            mOverlayConfig = mInitAppsHelper.initSystemApps(packageParser, packageSettings, userIds,
@@ -2327,6 +2332,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
            mInitAppsHelper.initNonSystemApps(packageParser, userIds, startTime);
            packageParser.close();

            mResetSignatures = false;

            mRequiredVerifierPackages = getRequiredButNotReallyRequiredVerifiersLPr(computer);
            mRequiredInstallerPackage = getRequiredInstallerLPr(computer);
            mRequiredUninstallerPackage = getRequiredUninstallerLPr(computer);