Ilja Pavkovic created COMPRESS-249:
--------------------------------------
Summary: TarArchiveInputStream does not properly read from
underlying InputStream
Key: COMPRESS-249
URL: https://issues.apache.org/jira/browse/COMPRESS-249
Project: Commons Compress
Issue Type: Bug
Components: Archivers
Affects Versions: 1.6
Reporter: Ilja Pavkovic
Priority: Critical
TarArchiveInputStream reads header with its protected function readRecord().
This code improperly assumes that is.read(buf) always fills the whole buffer.
This assumption is wrong. A proper implementation needs to call read multiple
times until all bytes are read:
protected byte[] readRecord() throws IOException {
byte[] record = new byte[recordSize];
// start change
// int readNow = is.read(buf);
int readNow = 0;
while(readNow <= recordSize){
int bytesRead = is.read(record,0, recordSize - readNow);
if(bytesRead == -1) {
break;
}
readNow += bytesRead;
}
// end change
count(readNow);
if (readNow != recordSize) {
return null;
}
return record;
}
--
This message was sent by Atlassian JIRA
(v6.1.4#6159)