[ 
https://issues.apache.org/jira/browse/COMPRESS-219?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13582250#comment-13582250
 ] 

Wurstbrot mit Senf commented on COMPRESS-219:
---------------------------------------------

What you did in the test, works: you wrote the stream to a file, i.e. you 
actually copied the internal zip to the file. What causes the problem is the 
actuall deflating of the zip within the zip.

That is: creating a new ZipArchiveInputStream from the ZipArchiveInputStream 
like in the following snippet (I rewrote your code for NIO.2, sorry for that 
:-():
@Test
  public static void shouldReadNestedZip() throws Exception {
    final Path outDir = Files.createDirectories(Paths.get("dir"));
    try (ZipArchiveInputStream in = new 
ZipArchiveInputStream(Files.newInputStream(Paths.get("COMPRESS-219.zip")));) {
      extractZipInputStream(outDir, in);
    } finally {
      FileUtils.deleteDirectory(outDir.toFile());
    }
  }

  private static void extractZipInputStream(final Path outDir, final 
ZipArchiveInputStream in) throws IOException {
    ZipArchiveEntry zae = in.getNextZipEntry();
    while (zae != null) {
      if (zae.getName().endsWith(".zip")) {
        final Path outFile = 
outDir.resolve(Paths.get(zae.getName().replace("^/", "")));
        Files.createDirectories(outFile);
        final ZipArchiveInputStream zipInZip = new ZipArchiveInputStream(in);
        extractZipInputStream(outFile, zipInZip);
      }
      zae = in.getNextZipEntry();
    }
  }
                
> ZipArchiveInputStream: ArrayIndexOutOfBoundsException when extracting a 
> STORED zip file entry from within a zip.
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: COMPRESS-219
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-219
>             Project: Commons Compress
>          Issue Type: Bug
>          Components: Archivers
>    Affects Versions: 1.4.1
>         Environment: Windows (Linux as well)
>            Reporter: Wurstbrot mit Senf
>            Priority: Minor
>         Attachments: compress-219-test.patch, test-linux.zip
>
>
> When trying to read out a ZIP file, that has been stored (Method STORE, not 
> DEFLATE!, with DEFLATE it seems OK) in another ZIP file using the 
> ZipArchiveInputStream, I do get an ArrayIndexOutOfBoundsException when doing 
> the arraycopy in ZipArchiveInputStream#readStored(byte[], int, int) (line 
> 362) because the "toRead" is not decreased by the buf.offsetInBuffer.
> I will add the zip in question as attachment.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to