[ 
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)

Reply via email to