summaryrefslogtreecommitdiffstats
path: root/luni/src
diff options
context:
space:
mode:
authorNick Kralevich <nnk@google.com>2015-04-14 00:57:24 -0700
committerNick Kralevich <nnk@google.com>2015-04-14 00:58:39 -0700
commitbcba24e2b4d94b6b0743110c84eca20fa58b069c (patch)
tree8ac07db236a84ed6f6a042f445f1f6d829de067f /luni/src
parent5b398cacaaf6deafed24cf8b851ee5d5b5b6473f (diff)
downloadlibcore-bcba24e2b4d94b6b0743110c84eca20fa58b069c.zip
libcore-bcba24e2b4d94b6b0743110c84eca20fa58b069c.tar.gz
libcore-bcba24e2b4d94b6b0743110c84eca20fa58b069c.tar.bz2
StrictJarFile: better handle missing files
Ensure all manifest files are present in the jar. Bug: 1162500 Change-Id: I36b40a34d5837b8ad4a0d13e7ea2e37ad7e51f3b
Diffstat (limited to 'luni/src')
-rw-r--r--luni/src/main/java/java/util/jar/StrictJarFile.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/luni/src/main/java/java/util/jar/StrictJarFile.java b/luni/src/main/java/java/util/jar/StrictJarFile.java
index 0a8eaa2..a73ca2a 100644
--- a/luni/src/main/java/java/util/jar/StrictJarFile.java
+++ b/luni/src/main/java/java/util/jar/StrictJarFile.java
@@ -24,6 +24,7 @@ import java.io.RandomAccessFile;
import java.security.cert.Certificate;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.Set;
import java.util.zip.Inflater;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
@@ -64,6 +65,12 @@ public final class StrictJarFile {
HashMap<String, byte[]> metaEntries = getMetaEntries();
this.manifest = new Manifest(metaEntries.get(JarFile.MANIFEST_NAME), true);
this.verifier = new JarVerifier(fileName, manifest, metaEntries);
+ Set<String> files = this.manifest.getEntries().keySet();
+ for (String file : files) {
+ if (findEntry(file) == null) {
+ throw new SecurityException(fileName + ": File " + file + " in manifest does not exist");
+ }
+ }
isSigned = verifier.readCertificates() && verifier.isSignedJar();
} catch (IOException | SecurityException e) {