Rohan Padhye created COMPRESS-424:
-------------------------------------

             Summary: [bzip2] Multiple ArrayIndexOutOfBoundsException(s) when 
decompressing malformed input
                 Key: COMPRESS-424
                 URL: https://issues.apache.org/jira/browse/COMPRESS-424
             Project: Commons Compress
          Issue Type: Bug
          Components: Compressors
    Affects Versions: 1.15, 1.14
            Reporter: Rohan Padhye
            Priority: Minor


Encountered multiple unchecked exceptions thrown from 
{{BZip2CompressorInputStream.<init>}} when parsing malformed files. 

{{ArrayIndexOutOfBoundsException}} is an unchecked exception that is not 
documented in this API; therefore, such exceptions can cause stability issues 
in applications that are not expecting them. Instead, an {{IOException}} should 
be thrown indicating that the input stream contains malformed data.

Stack traces for three distinct (but possibly related) sources of exceptions 
follow:

{noformat}
java.lang.ArrayIndexOutOfBoundsException: 65536
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.hbCreateDecodeTables(BZip2CompressorInputStream.java:422)
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.createHuffmanDecodingTables(BZip2CompressorInputStream.java:546)
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.recvDecodingTables(BZip2CompressorInputStream.java:518)
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.getAndMoveToFrontDecode(BZip2CompressorInputStream.java:555)
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.initBlock(BZip2CompressorInputStream.java:324)
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.<init>(BZip2CompressorInputStream.java:135)
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.<init>(BZip2CompressorInputStream.java:112)
{noformat}


{noformat}
java.lang.ArrayIndexOutOfBoundsException: 6
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.recvDecodingTables(BZip2CompressorInputStream.java:493)
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.getAndMoveToFrontDecode(BZip2CompressorInputStream.java:555)
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.initBlock(BZip2CompressorInputStream.java:324)
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.<init>(BZip2CompressorInputStream.java:135)
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.<init>(BZip2CompressorInputStream.java:112)

{noformat}


{noformat}
java.lang.ArrayIndexOutOfBoundsException: 18002
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.getAndMoveToFrontDecode(BZip2CompressorInputStream.java:605)
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.initBlock(BZip2CompressorInputStream.java:324)
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.<init>(BZip2CompressorInputStream.java:135)
        at 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.<init>(BZip2CompressorInputStream.java:112)
{noformat}

The inputs were found by mutating random bytes in a simple well-formed file (a 
compressed string of zeros).





--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to