OSDN Git Service

Explicitly collect manifest digests.
authorJeff Sharkey <jsharkey@android.com>
Thu, 19 Jun 2014 22:48:47 +0000 (15:48 -0700)
committerJeff Sharkey <jsharkey@android.com>
Thu, 19 Jun 2014 22:49:05 +0000 (15:49 -0700)
Previously it was a side effect of collectCertificates().

Bug: 15740334
Change-Id: I2e044fdcc1c86ce730b9570bfbecf873366325e1

core/java/android/content/pm/PackageManager.java
core/java/android/content/pm/PackageParser.java
services/core/java/com/android/server/pm/PackageManagerService.java

index 5d55b0a..8415384 100644 (file)
@@ -2876,6 +2876,7 @@ public abstract class PackageManager {
             PackageParser.Package pkg = parser.parseMonolithicPackage(apkFile, 0);
             if ((flags & GET_SIGNATURES) != 0) {
                 parser.collectCertificates(pkg, 0);
+                parser.collectManifestDigest(pkg);
             }
             PackageUserState state = new PackageUserState();
             return PackageParser.generatePackageInfo(pkg, null, flags, 0, 0, null, state);
index c8acd66..dc937a5 100644 (file)
@@ -744,6 +744,8 @@ public class PackageParser {
      * {@code AndroidManifest.xml}, {@code true} is returned.
      */
     public void collectManifestDigest(Package pkg) throws PackageParserException {
+        pkg.manifestDigest = null;
+
         // TODO: extend to gather digest for split APKs
         try {
             final StrictJarFile jarFile = new StrictJarFile(pkg.codePath);
index 2f40f2a..2f52564 100755 (executable)
@@ -4182,6 +4182,7 @@ public class PackageManagerService extends IPackageManager.Stub {
 
         try {
             pp.collectCertificates(pkg, parseFlags);
+            pp.collectManifestDigest(pkg);
         } catch (PackageParserException e) {
             mLastScanError = e.error;
             return false;
@@ -10225,6 +10226,7 @@ public class PackageManagerService extends IPackageManager.Stub {
 
         try {
             pp.collectCertificates(pkg, parseFlags);
+            pp.collectManifestDigest(pkg);
         } catch (PackageParserException e) {
             res.returnCode = e.error;
             return;