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

Commit 1dfe7990 authored by Narayan Kamath's avatar Narayan Kamath Committed by Android Git Automerger
Browse files

am 8f90e476: am 28635ca3: am 44291d9c: Merge "Use StrictJarFile instead of...

am 8f90e476: am 28635ca3: am 44291d9c: Merge "Use StrictJarFile instead of JarFile for cert collection."

* commit '8f90e476':
  Use StrictJarFile instead of JarFile for cert collection.
parents 1add7894 8f90e476
Loading
Loading
Loading
Loading
+16 −14
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.StrictJarFile;
import java.util.zip.ZipEntry;

import com.android.internal.util.XmlUtils;
@@ -456,7 +456,7 @@ public class PackageParser {
        return pi;
    }

    private Certificate[] loadCertificates(JarFile jarFile, JarEntry je,
    private Certificate[] loadCertificates(StrictJarFile jarFile, ZipEntry je,
            byte[] readBuffer) {
        try {
            // We must read the stream for the JarEntry to retrieve
@@ -466,13 +466,11 @@ public class PackageParser {
                // not using
            }
            is.close();
            return je != null ? je.getCertificates() : null;
            return je != null ? jarFile.getCertificates(je) : null;
        } catch (IOException e) {
            Slog.w(TAG, "Exception reading " + je.getName() + " in "
                    + jarFile.getName(), e);
            Slog.w(TAG, "Exception reading " + je.getName() + " in " + jarFile, e);
        } catch (RuntimeException e) {
            Slog.w(TAG, "Exception reading " + je.getName() + " in "
                    + jarFile.getName(), e);
            Slog.w(TAG, "Exception reading " + je.getName() + " in " + jarFile, e);
        }
        return null;
    }
@@ -591,9 +589,9 @@ public class PackageParser {
     */
    public boolean collectManifestDigest(Package pkg) {
        try {
            final JarFile jarFile = new JarFile(mArchiveSourcePath);
            final StrictJarFile jarFile = new StrictJarFile(mArchiveSourcePath);
            try {
                final ZipEntry je = jarFile.getEntry(ANDROID_MANIFEST_FILENAME);
                final ZipEntry je = jarFile.findEntry(ANDROID_MANIFEST_FILENAME);
                if (je != null) {
                    pkg.manifestDigest = ManifestDigest.fromInputStream(jarFile.getInputStream(je));
                }
@@ -624,7 +622,7 @@ public class PackageParser {
        }

        try {
            JarFile jarFile = new JarFile(mArchiveSourcePath);
            StrictJarFile jarFile = new StrictJarFile(mArchiveSourcePath);

            Certificate[] certs = null;

@@ -633,7 +631,7 @@ public class PackageParser {
                // can trust it...  we'll just use the AndroidManifest.xml
                // to retrieve its signatures, not validating all of the
                // files.
                JarEntry jarEntry = jarFile.getJarEntry(ANDROID_MANIFEST_FILENAME);
                ZipEntry jarEntry = jarFile.findEntry(ANDROID_MANIFEST_FILENAME);
                certs = loadCertificates(jarFile, jarEntry, readBuffer);
                if (certs == null) {
                    Slog.e(TAG, "Package " + pkg.packageName
@@ -656,9 +654,9 @@ public class PackageParser {
                    }
                }
            } else {
                Enumeration<JarEntry> entries = jarFile.entries();
                while (entries.hasMoreElements()) {
                    final JarEntry je = entries.nextElement();
                Iterator<ZipEntry> entries = jarFile.iterator();
                while (entries.hasNext()) {
                    final ZipEntry je = entries.next();
                    if (je.isDirectory()) continue;

                    final String name = je.getName();
@@ -744,6 +742,10 @@ public class PackageParser {
            Slog.w(TAG, "Exception reading " + mArchiveSourcePath, e);
            mParseError = PackageManager.INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING;
            return false;
        } catch (SecurityException e) {
            Slog.w(TAG, "Exception reading " + mArchiveSourcePath, e);
            mParseError = PackageManager.INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING;
            return false;
        } catch (RuntimeException e) {
            Slog.w(TAG, "Exception reading " + mArchiveSourcePath, e);
            mParseError = PackageManager.INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION;