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

BELUGA BEHR edited comment on COMPRESS-279 at 4/25/14 2:28 AM:
---------------------------------------------------------------

Surprisingly simple (unless I'm over-looking something) fix.  Patch included.

Note that calling IOUtils#skip (Compress-277) on the stream will have the 
effect of skipping until EOL, then when it finishes by calling read, it will 
trigger this exception.

There are no unit tests in the suite that trigger this though.


was (Author: belugabehr):
Surprisingly simple (unless I'm over-looking something) fix.  Patch included.

Note that calling IOUtils#skip on the stream will have the effect of skipping 
until EOL, then when it finishes by calling read, it will trigger this 
exception.

There are no unit tests in the suite that trigger this though.

> TarArchiveInputStream silently finished when unexpected EOF occured
> -------------------------------------------------------------------
>
>                 Key: COMPRESS-279
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-279
>             Project: Commons Compress
>          Issue Type: Bug
>          Components: Archivers
>    Affects Versions: 1.7, 1.8
>         Environment: Common Compress 1.7 + openJDK 1.7
>            Reporter: PeterL in
>              Labels: regression, tar
>             Fix For: 1.9
>
>         Attachments: TarArchiveInputStream.java.patch, complete.tar, 
> trim.tar, trim.tar.bz2
>
>
> I just found the following test case didn't raise an IOException as it used 
> to be for a *tar trimmed on purpose* 
> @Test
>   public void testCorruptedBzip2() throws IOException {
>     String archivePath = PathUtil.join(testdataDir, "test.tar.bz2");
>     TarArchiveInputStream input = null;
>     input = new TarArchiveInputStream(new BZip2CompressorInputStream(
>         GoogleFile.SYSTEM.newInputStream(archivePath), true));
>     ArchiveEntry nextMatchedEntry = input.getNextEntry();
>     while (nextMatchedEntry != null) {
>       logger.infofmt("Extracting %s", nextMatchedEntry.getName());
>       String outputPath = PathUtil.join("/tmp/", nextMatchedEntry.getName());
>       OutputStream out = new FileOutputStream(outputPath);
>       ByteStreams.copy(input, out);
>       out.close();
>       nextMatchedEntry = input.getNextEntry();
>     }
>   }



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to