You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by pe...@apache.org on 2021/09/29 06:58:23 UTC
[commons-compress] branch master updated: COMPRESS-591: Fix
decoding of 7z files containing LZMA streams with end
This is an automated email from the ASF dual-hosted git repository.
peterlee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-compress.git
The following commit(s) were added to refs/heads/master by this push:
new 31d1738 COMPRESS-591: Fix decoding of 7z files containing LZMA streams with end
new 76ed54d Merge pull request #223 from PeterAlfredLee/COMPRESS-591
31d1738 is described below
commit 31d1738ccc57f86d8fd56ff5271cda82a65f01ee
Author: PeterAlfredLee <pe...@gmail.com>
AuthorDate: Wed Sep 22 16:11:40 2021 +0800
COMPRESS-591: Fix decoding of 7z files containing LZMA streams with end
---
.../commons/compress/archivers/sevenz/LZMADecoder.java | 4 +++-
.../commons/compress/archivers/sevenz/SevenZFileTest.java | 10 ++++++++++
src/test/resources/lzma-with-eos.7z | Bin 0 -> 174 bytes
3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/LZMADecoder.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/LZMADecoder.java
index c1e8eda..68a2836 100644
--- a/src/main/java/org/apache/commons/compress/archivers/sevenz/LZMADecoder.java
+++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/LZMADecoder.java
@@ -51,7 +51,9 @@ class LZMADecoder extends CoderBase {
if (memoryUsageInKb > maxMemoryLimitInKb) {
throw new MemoryLimitException(memoryUsageInKb, maxMemoryLimitInKb);
}
- return new LZMAInputStream(in, uncompressedLength, propsByte, dictSize);
+ final LZMAInputStream lzmaIn = new LZMAInputStream(in, uncompressedLength, propsByte, dictSize);
+ lzmaIn.enableRelaxedEndCondition();
+ return lzmaIn;
}
@SuppressWarnings("resource")
diff --git a/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java b/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
index c08adaf..26aaf35 100644
--- a/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
+++ b/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
@@ -756,6 +756,16 @@ public class SevenZFileTest extends AbstractTestCase {
}
}
+ @Test
+ public void testSevenZWithEOS() throws IOException {
+ try(final SevenZFile sevenZFile = new SevenZFile(getFile("lzma-with-eos.7z"))) {
+ final List<SevenZArchiveEntry> entries = (List<SevenZArchiveEntry>) sevenZFile.getEntries();
+ for (final SevenZArchiveEntry entry : entries) {
+ IOUtils.toByteArray(sevenZFile.getInputStream(entry));
+ }
+ }
+ }
+
private void test7zUnarchive(final File f, final SevenZMethod m, final byte[] password) throws Exception {
try (SevenZFile sevenZFile = new SevenZFile(f, password)) {
test7zUnarchive(sevenZFile, m);
diff --git a/src/test/resources/lzma-with-eos.7z b/src/test/resources/lzma-with-eos.7z
new file mode 100644
index 0000000..d856e13
Binary files /dev/null and b/src/test/resources/lzma-with-eos.7z differ