Bug#739655: libcommons-compress-java: TarArchiveInputStream copes poorly with short reads from underlying stream
Jonathan Nieder
jrnieder at gmail.com
Fri Feb 21 00:00:41 UTC 2014
Package: libcommons-compress-java
Version: 1.6-1
Tags: upstream patch fixed-upstream
Severity: important
Justification: regression
Control: forwarded -1 https://issues.apache.org/jira/browse/COMPRESS-245
Hi,
>From upstream issue COMPRESS-245:
The attached archive decompressed with 1.6 only extracts part
of the archive. This does not happen with version 1.5
FileInputStream fin = new FileInputStream("exampletar.tar.gz");
GZIPInputStream gin = new GZIPInputStream(fin);
TarArchiveInputStream tin = new TarArchiveInputStream(gin);
TarArchiveEntry entry;
while ((entry = tin.getNextTarEntry()) != null) {
Fixed by r1548380 "COMPRESS-245 TarArchiveInputStream might fail to
read a stream if a single call to read() returns less than a full
record":
--- src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java (revision 1548379)
+++ src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java (revision 1548380)
@@ -385,7 +385,7 @@
byte[] record = new byte[recordSize];
- int readNow = is.read(record);
+ int readNow = IOUtils.readFully(is, record);
count(readNow);
if (readNow != recordSize) {
return null;
r1548388 "testcase for COMPRESS-245 provided by Andreas Aronsson"
has a test.
More information about the pkg-java-maintainers
mailing list