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)