[
https://issues.apache.org/jira/browse/COMPRESS-584?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Peter Lee resolved COMPRESS-584.
--------------------------------
Resolution: Fixed
> IOUtils.readRange() can read more from a channel than asked for
> ---------------------------------------------------------------
>
> Key: COMPRESS-584
> URL: https://issues.apache.org/jira/browse/COMPRESS-584
> Project: Commons Compress
> Issue Type: Bug
> Components: Archivers
> Affects Versions: 1.21
> Reporter: Matthijs Laan
> Assignee: Peter Lee
> Priority: Major
> Time Spent: 5h 10m
> Remaining Estimate: 0h
>
> When {{IOUtils.readRange(ReadableByteChannel,int)}} gets less than the number
> of bytes asked for in the first read call it does not reduce the buffer size
> for the next read call and may read more than asked for.
> This situation is rare when using a {{FileChannel}} but I wrote a
> {{SeekableByteChannel}} backed by a URI using HTTP range requests and reading
> from a socket can often return less bytes than asked for. When I used this
> channel to read a {{ZipFile}} it only read the ZIP central directory
> partially sometimes because {{IOUtils.readRange()}} called from
> {{ZipFile.readCentralDirectoryEntry()}} read more bytes than asked for and it
> stopped parsing directory entries.
> Fix: [https://github.com/apache/commons-compress/pull/214]
--
This message was sent by Atlassian Jira
(v8.3.4#803005)