[
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:26 AM:
---------------------------------------------------------------
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.
was (Author: belugabehr):
Surprisingly simple (unless I'm over-looking something) fix. Patch included.
Not 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)