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

Commit 373f0b43 authored by Todd Kennedy's avatar Todd Kennedy
Browse files

revert quick install

bug: 25118622
Change-Id: I61c3a1ea9015599dc45bd9e656f99f6bf8c4ec02
parent 0550f1b8
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -9667,7 +9667,6 @@ package android.content.pm {
    method public void setAppLabel(java.lang.CharSequence);
    method public void setAppPackageName(java.lang.String);
    method public void setGrantedRuntimePermissions(java.lang.String[]);
    method public void setInstallFlagsQuick();
    method public void setInstallLocation(int);
    method public void setOriginatingUid(int);
    method public void setOriginatingUri(android.net.Uri);
+0 −6
Original line number Diff line number Diff line
@@ -1041,12 +1041,6 @@ public class PackageInstaller {
            installFlags |= PackageManager.INSTALL_FORCE_PERMISSION_PROMPT;
        }

        /** {@hide} */
        @SystemApi
        public void setInstallFlagsQuick() {
            installFlags |= PackageManager.INSTALL_QUICK;
        }

        /** {@hide} */
        public void dump(IndentingPrintWriter pw) {
            pw.printPair("mode", mode);
+1 −9
Original line number Diff line number Diff line
@@ -455,21 +455,13 @@ public abstract class PackageManager {
     */
    public static final int INSTALL_FORCE_PERMISSION_PROMPT = 0x00000400;

    /**
     * Flag parameter for {@link #installPackage} to indicate that this package is
     * to be installed quickly.
     *
     * @hide
     */
    public static final int INSTALL_QUICK = 0x00000800;

    /**
     * Flag parameter for {@link #installPackage} to indicate that this package is
     * to be installed as a lightweight "ephemeral" app.
     *
     * @hide
     */
    public static final int INSTALL_EPHEMERAL = 0x00001000;
    public static final int INSTALL_EPHEMERAL = 0x00000800;

    /**
     * Flag parameter for
+5 −15
Original line number Diff line number Diff line
@@ -625,9 +625,7 @@ public class PackageParser {
    public final static int PARSE_COLLECT_CERTIFICATES = 1<<8;
    public final static int PARSE_TRUSTED_OVERLAY = 1<<9;
    public final static int PARSE_ENFORCE_CODE = 1<<10;
    // TODO: fix b/25118622; remove this entirely once signature processing is quick
    public final static int PARSE_SKIP_VERIFICATION = 1<<11;
    public final static int PARSE_IS_EPHEMERAL = 1<<12;
    public final static int PARSE_IS_EPHEMERAL = 1<<11;

    private static final Comparator<String> sSplitNameComparator = new SplitNameComparator();

@@ -1060,8 +1058,7 @@ public class PackageParser {

    /**
     * Collect certificates from all the APKs described in the given package,
     * populating {@link Package#mSignatures}.
     * <p>Depending upon the parser flags, this may also asserts that all APK
     * populating {@link Package#mSignatures}. Also asserts that all APK
     * contents are signed correctly and consistently.
     */
    public void collectCertificates(Package pkg, int parseFlags) throws PackageParserException {
@@ -1084,10 +1081,8 @@ public class PackageParser {
        final boolean hasCode = (apkFlags & ApplicationInfo.FLAG_HAS_CODE) != 0;
        final boolean requireCode = ((parseFlags & PARSE_ENFORCE_CODE) != 0) && hasCode;
        final String apkPath = apkFile.getAbsolutePath();
        final boolean skipVerification = Build.IS_DEBUGGABLE
                && ((parseFlags & PARSE_SKIP_VERIFICATION) != 0);

        boolean codeFound = skipVerification;
        boolean codeFound = false;
        StrictJarFile jarFile = null;
        try {
            Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "strictJarFileCtor");
@@ -1106,7 +1101,7 @@ public class PackageParser {
            toVerify.add(manifestEntry);

            // If we're parsing an untrusted package, verify all contents
            if (!skipVerification && (parseFlags & PARSE_IS_SYSTEM) == 0) {
            if ((parseFlags & PARSE_IS_SYSTEM) == 0) {
                final Iterator<ZipEntry> i = jarFile.iterator();
                while (i.hasNext()) {
                    final ZipEntry entry = i.next();
@@ -1150,9 +1145,6 @@ public class PackageParser {
                    for (int i=0; i < entryCerts.length; i++) {
                        pkg.mSigningKeys.add(entryCerts[i][0].getPublicKey());
                    }
                    if (skipVerification) {
                        break;
                    }
                } else {
                    if (!Signature.areExactMatch(pkg.mSignatures, entrySignatures)) {
                        throw new PackageParserException(
@@ -1218,9 +1210,7 @@ public class PackageParser {
            if ((flags & PARSE_COLLECT_CERTIFICATES) != 0) {
                // TODO: factor signature related items out of Package object
                final Package tempPkg = new Package(null);
                // TODO: fix b/25118622; pass in '0' for parse flags
                collectCertificates(tempPkg, apkFile, 0 /*apkFlags*/,
                        flags & PARSE_SKIP_VERIFICATION);
                collectCertificates(tempPkg, apkFile, 0 /*apkFlags*/, 0 /*flags*/);
                signatures = tempPkg.mSignatures;
            } else {
                signatures = null;
+3 −12
Original line number Diff line number Diff line
@@ -482,7 +482,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
            throw new PackageManagerException(INSTALL_FAILED_CONTAINER_ERROR,
                    "Failed to resolve stage location", e);
        }
        final boolean quickInstall = (params.installFlags & PackageManager.INSTALL_QUICK) != 0;

        // Verify that stage looks sane with respect to existing application.
        // This currently only ensures packageName, versionCode, and certificate
@@ -490,10 +489,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
        validateInstallLocked();

        Preconditions.checkNotNull(mPackageName);
        // TODO: fix b/25118622; don't bypass signature check
        if (!quickInstall) {
        Preconditions.checkNotNull(mSignatures);
        }
        Preconditions.checkNotNull(mResolvedBaseFile);

        if (!mPermissionsAccepted) {
@@ -603,7 +599,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
     * {@link PackageManagerService}.
     */
    private void validateInstallLocked() throws PackageManagerException {
        final boolean quickInstall = (params.installFlags & PackageManager.INSTALL_QUICK) != 0;
        mPackageName = null;
        mVersionCode = -1;
        mSignatures = null;
@@ -627,9 +622,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {

            final ApkLite apk;
            try {
                // TODO: fix b/25118622; always use PARSE_COLLECT_CERTIFICATES
                final int parseFlags = quickInstall ? 0 : PackageParser.PARSE_COLLECT_CERTIFICATES;
                apk = PackageParser.parseApkLite(file, parseFlags);
                apk = PackageParser.parseApkLite(file, PackageParser.PARSE_COLLECT_CERTIFICATES);
            } catch (PackageParserException e) {
                throw PackageManagerException.from(e);
            }
@@ -750,7 +743,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
    }

    private void assertApkConsistent(String tag, ApkLite apk) throws PackageManagerException {
        final boolean quickInstall = (params.installFlags & PackageManager.INSTALL_QUICK) != 0;
        if (!mPackageName.equals(apk.packageName)) {
            throw new PackageManagerException(INSTALL_FAILED_INVALID_APK, tag + " package "
                    + apk.packageName + " inconsistent with " + mPackageName);
@@ -760,8 +752,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
                    + " version code " + apk.versionCode + " inconsistent with "
                    + mVersionCode);
        }
        // TODO: fix b/25118622; don't bypass signature check
        if (!quickInstall && !Signature.areExactMatch(mSignatures, apk.signatures)) {
        if (!Signature.areExactMatch(mSignatures, apk.signatures)) {
            throw new PackageManagerException(INSTALL_FAILED_INVALID_APK,
                    tag + " signatures are inconsistent");
        }
Loading