[ https://issues.apache.org/jira/browse/COMPRESS-424?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16305571#comment-16305571 ]
Stefan Bodewig commented on COMPRESS-424: ----------------------------------------- for some reason I cannot explain the effect - if one exists - rather says things have sped up https://github.com/bodewig/commons-compress-benchmarks/wiki/COMPRESS-424 The change is https://github.com/apache/commons-compress/commit/ccf4ce767a6cc07f1a88a0c33393e394af3c328b which I'll need to triple-check before merging it to master. > [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.14, 1.15 > Reporter: Rohan Padhye > Priority: Minor > Fix For: 1.16 > > Attachments: bad1.bz2, bad2.bz2, bad3.bz2 > > > 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)