Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save mchv/9645676 to your computer and use it in GitHub Desktop.
Save mchv/9645676 to your computer and use it in GitHub Desktop.
import java.io.*;
import java.util.jar.JarEntry;
import java.util.jar.Manifest;
import java.util.jar.Attributes;
import java.util.jar.JarOutputStream;
public class JarBug {
public static void main(String[] args) throws IOException {
generateLargeJar(new File("buggyjar.jar"));
}
static void generateLargeJar(File result) throws IOException {
if (result.exists()) {
result.delete();
}
Manifest manifest = new Manifest();
manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0");
JarOutputStream copyTo = new JarOutputStream(new FileOutputStream(result), manifest);
int many = Short.MAX_VALUE * 2 + 2;
for (int i = 0 ; i < many ; i++) {
JarEntry e = new JarEntry("F-" + i + ".txt/");
copyTo.putNextEntry(e);
}
copyTo.flush();
copyTo.close();
}
}
@mchv
Copy link
Author

mchv commented Mar 19, 2014

javac JarBug.java
java JarBug
java -jar buggyjar.jar

Expected output (at least on Sun JDK 6):

Failed to load Main-Class manifest attribute from
buggyjar.jar

OpenJDK 7u51 output:

Error: Invalid or corrupt jarfile buggyjar.jar

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment