From 032f2b246bd01653c592f2b148d6a0debfe164b2 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Thu, 19 Jun 2014 15:48:47 -0700 Subject: [PATCH] Explicitly collect manifest digests. Previously it was a side effect of collectCertificates(). Bug: 15740334 Change-Id: I2e044fdcc1c86ce730b9570bfbecf873366325e1 --- core/java/android/content/pm/PackageManager.java | 1 + core/java/android/content/pm/PackageParser.java | 2 ++ .../core/java/com/android/server/pm/PackageManagerService.java | 2 ++ 3 files changed, 5 insertions(+) diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 5d55b0a11bd4c..84153848dac13 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -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); diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index c8acd66f3b2d2..dc937a5fef460 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -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); diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 2f40f2ab19e2c..2f52564140e71 100755 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -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;