Lasse Collin created COMPRESS-591:
-------------------------------------

             Summary: Fix decoding of 7z files containing LZMA streams with end 
marker
                 Key: COMPRESS-591
                 URL: https://issues.apache.org/jira/browse/COMPRESS-591
             Project: Commons Compress
          Issue Type: Bug
          Components: Archivers
    Affects Versions: 1.21
            Reporter: Lasse Collin
         Attachments: lzma-with-eos.7z

Some uncommon but valid .7z files contain LZMA streams that use the end of 
stream marker. Currently Commons Compress together with XZ for Java considers 
such files to be corrupt.

XZ for Java 1.9 added a new method 
[LZMAInputStream.enableRelaxedEndCondition()|https://tukaani.org/xz/xz-javadoc/org/tukaani/xz/LZMAInputStream.html#enableRelaxedEndCondition()]
 specifically for this issue. To use this feature in Commons Compress, a change 
is needed to the "decode" function in 
src/main/java/org/apache/commons/compress/archivers/sevenz/LZMADecoder.java:

{{- return new LZMAInputStream(in, uncompressedLength, propsByte, dictSize);}}
 {{+ final LZMAInputStream lzmaIn = new LZMAInputStream(in, uncompressedLength, 
propsByte, dictSize);}}
 {{+ lzmaIn.enableRelaxedEndCondition();}}
 {{+ return lzmaIn;}}

A tiny test file is attached (thanks to Simon for providing it). Another test 
file "sheet.7z" can be found from 
<[https://sourceforge.net/p/lzmautils/discussion/708858/thread/822d80d5ea/]>.

XZ for Java 1.9 is already a few months old, so I apologize for not reporting 
this earlier.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to