You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2015/01/04 11:34:41 UTC

svn commit: r1649312 - /commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportIT.java

Author: bodewig
Date: Sun Jan  4 10:34:41 2015
New Revision: 1649312

URL: http://svn.apache.org/r1649312
Log:
testcase demonstrating zip64 EOCDL corruption

Modified:
    commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportIT.java

Modified: commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportIT.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportIT.java?rev=1649312&r1=1649311&r2=1649312&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportIT.java (original)
+++ commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportIT.java Sun Jan  4 10:34:41 2015
@@ -130,6 +130,45 @@ public class Zip64SupportIT {
                                        "zip6/5GB_of_Zeros");
     }
 
+    @Test public void writeAndRead5GBOfZerosUsingZipFile() throws Throwable {
+        File f = null;
+        try {
+            f = write5GBZerosFile("writeAndRead5GBOfZerosUsingZipFile");
+            read5GBOfZerosUsingZipFileImpl(f, "5GB_of_Zeros");
+        } finally {
+            if (f != null) {
+                AbstractTestCase.tryHardToDelete(f);
+            }
+        }
+    }
+
+    private static File write5GBZerosFile(String testName) throws Throwable {
+        File f = getTempFile(testName);
+        ZipArchiveOutputStream zos = new ZipArchiveOutputStream(f);
+        try {
+            zos.setUseZip64(Zip64Mode.Always);
+            byte[] buf = new byte[ONE_MILLION];
+            ZipArchiveEntry zae = new ZipArchiveEntry("5GB_of_Zeros");
+            zae.setSize(FIVE_BILLION);
+            zae.setMethod(ZipEntry.DEFLATED);
+            zae.setCrc(0x8a408f16L);
+            zos.putArchiveEntry(zae);
+            for (int j = 0; j < FIVE_BILLION / 1000 / 1000; j++) {
+                zos.write(buf);
+            }
+            zos.closeArchiveEntry();
+            zos.close();
+        } catch (IOException ex) {
+            System.err.println("Failed to write archive because of: "
+                               + ex.getMessage()
+                               + " - likely not enough disk space.");
+            assumeTrue(false);
+        } finally {
+            zos.destroy();
+        }
+        return f;
+    }
+
     @Test public void read100KFilesUsingZipFile() throws Throwable {
         read100KFilesUsingZipFileImpl(get100KFileFile());
     }