diff options
| author | 2014-09-09 22:44:51 +0000 | |
|---|---|---|
| committer | 2014-09-09 22:44:52 +0000 | |
| commit | ad5f44a68c70f783fb4be85f089f63bfdd63ec0c (patch) | |
| tree | dd89b0fc2596dd64f402076d9e8f6794b770e2ed | |
| parent | 8544c7da8640d4c0b6c94f46d0519c1006aa6452 (diff) | |
| parent | bc09755e193c2802d2d88871ac3d1f182b260c30 (diff) | |
Merge "Missing manifest error should be NO_CERTIFICATES." into lmp-dev
4 files changed, 16 insertions, 11 deletions
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index e0fd532e4310..ddb0a6d7ab62 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -1099,9 +1099,12 @@ public class PackageParser { } } } - } catch (GeneralSecurityException | IOException | RuntimeException e) { + } catch (GeneralSecurityException e) { throw new PackageParserException(INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING, "Failed to collect certificates from " + apkPath, e); + } catch (IOException | RuntimeException e) { + throw new PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES, + "Failed to collect certificates from " + apkPath, e); } finally { closeQuietly(jarFile); } diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index adca46a6b826..06f550dabd89 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -579,8 +579,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { try { apk = PackageParser.parseApkLite(file, PackageParser.PARSE_COLLECT_CERTIFICATES); } catch (PackageParserException e) { - throw new PackageManagerException(INSTALL_FAILED_INVALID_APK, - "Failed to parse " + file + ": " + e); + throw PackageManagerException.from(e); } if (!stagedSplits.add(apk.splitName)) { @@ -646,8 +645,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { existingBase = PackageParser.parseApkLite(new File(app.getBaseCodePath()), PackageParser.PARSE_COLLECT_CERTIFICATES); } catch (PackageParserException e) { - throw new PackageManagerException(INSTALL_FAILED_INVALID_APK, - "Failed to parse existing package " + app.getCodePath() + ": " + e); + throw PackageManagerException.from(e); } assertApkConsistent("Existing base", existingBase); @@ -699,8 +697,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { try { baseApk = PackageParser.parseApkLite(mResolvedBaseFile, 0); } catch (PackageParserException e) { - throw new PackageManagerException(INSTALL_FAILED_INVALID_APK, - "Failed to parse base package " + mResolvedBaseFile + ": " + e); + throw PackageManagerException.from(e); } final List<String> splitPaths = new ArrayList<>(); diff --git a/services/core/java/com/android/server/pm/PackageManagerException.java b/services/core/java/com/android/server/pm/PackageManagerException.java index 0cbdcdc18a42..a41636e5d1b5 100644 --- a/services/core/java/com/android/server/pm/PackageManagerException.java +++ b/services/core/java/com/android/server/pm/PackageManagerException.java @@ -16,6 +16,8 @@ package com.android.server.pm; +import android.content.pm.PackageParser.PackageParserException; + /** {@hide} */ public class PackageManagerException extends Exception { public final int error; @@ -29,4 +31,9 @@ public class PackageManagerException extends Exception { super(detailMessage, throwable); this.error = error; } + + public static PackageManagerException from(PackageParserException e) + throws PackageManagerException { + throw new PackageManagerException(e.error, e.getMessage(), e.getCause()); + } } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index d1bc35b5b75b..d821fc18d4c1 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -4162,8 +4162,7 @@ public class PackageManagerService extends IPackageManager.Stub { pp.collectCertificates(pkg, parseFlags); pp.collectManifestDigest(pkg); } catch (PackageParserException e) { - throw new PackageManagerException(e.error, "Failed to collect certificates for " - + pkg.packageName + ": " + e.getMessage()); + throw PackageManagerException.from(e); } } @@ -4188,8 +4187,7 @@ public class PackageManagerService extends IPackageManager.Stub { try { pkg = pp.parsePackage(scanFile, parseFlags); } catch (PackageParserException e) { - throw new PackageManagerException(e.error, - "Failed to scan " + scanFile + ": " + e.getMessage()); + throw PackageManagerException.from(e); } PackageSetting ps = null; |