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)

Reply via email to