[
https://issues.apache.org/jira/browse/HADOOP-12677?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Wei-Chiu Chuang updated HADOOP-12677:
-------------------------------------
Attachment: HADOOP-12677.001.patch
Thanks [~laurentgo] for reporting this issue!
I was able to reproduce the exception and then created a patch and a regression
test case.
Attaching my rev01 patch:
* In DecompressorStream.skip(), declare both skipped and len as long to avoid
overflowing the number.
* Create a test case in TestBlockDecompressorStream. BlockDecompressorStream
inherits DecompressorStream, and DecompressorStream does not have its own test
file.
> DecompressorStream throws IndexOutOfBoundsException when calling skip(long)
> ---------------------------------------------------------------------------
>
> Key: HADOOP-12677
> URL: https://issues.apache.org/jira/browse/HADOOP-12677
> Project: Hadoop Common
> Issue Type: Bug
> Components: io
> Affects Versions: 2.4.0, 2.6.0, 3.0.0
> Reporter: Laurent Goujon
> Assignee: Wei-Chiu Chuang
> Attachments: HADOOP-12677.001.patch
>
>
> DecompressorStream.skip(long) throws an IndexOutOfBoundException when using a
> long bigger than Integer.MAX_VALUE
> This is because of this cast from long to int:
> https://github.com/apache/hadoop-common/blob/HADOOP-3628/src/core/org/apache/hadoop/io/compress/DecompressorStream.java#L125
> The fix is probably to do the cast after applying Math.min: in that case, it
> should not be an issue since it should not be bigger than the buffer size
> (512)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)