Explicitly collect manifest digests.

Previously it was a side effect of collectCertificates().

Bug: 15740334
Change-Id: I2e044fdcc1c86ce730b9570bfbecf873366325e1
This commit is contained in:
Jeff Sharkey
2014-06-19 15:48:47 -07:00
parent 7a2d46f39b
commit 032f2b246b
3 changed files with 5 additions and 0 deletions

View 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);

View 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);

View File

@@ -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;