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)