You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Peter Lee (Jira)" <ji...@apache.org> on 2021/09/26 01:34:00 UTC
[jira] [Comment Edited] (COMPRESS-591) Fix decoding of 7z files
containing LZMA streams with end marker
[ https://issues.apache.org/jira/browse/COMPRESS-591?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17419545#comment-17419545 ]
Peter Lee edited comment on COMPRESS-591 at 9/26/21, 1:33 AM:
--------------------------------------------------------------
_The PR changes also compressors/lzma/LZMACompressorInputStream.java. This is wrong and will cause problems._
I see. I will fix this.
Thank you again for your reporting and patch.
was (Author: peterlee):
_The PR changes also compressors/lzma/LZMACompressorInputStream.java. This is wrong and will cause problems._
I see. I will fix this.
Thank you again for your reporting and path.
> 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
> Priority: Major
> Attachments: lzma-with-eos.7z
>
> Time Spent: 50m
> Remaining Estimate: 0h
>
> 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)