Author: bodewig
Date: Wed Jan 22 05:13:34 2014
New Revision: 1560252
URL: http://svn.apache.org/r1560252
Log:
COMPRESS-256 bad calculation of LZMA dictionary sizes
Added:
commons/proper/compress/trunk/src/test/resources/COMPRESS-256.7z (with
props)
Modified:
commons/proper/compress/trunk/src/changes/changes.xml
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Coders.java
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
Modified: commons/proper/compress/trunk/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/changes/changes.xml?rev=1560252&r1=1560251&r2=1560252&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/changes/changes.xml (original)
+++ commons/proper/compress/trunk/src/changes/changes.xml Wed Jan 22 05:13:34
2014
@@ -48,6 +48,11 @@ The <action> type attribute can be add,u
BZip2CompressorInputStream read fewer bytes than possible from
a truncated stream.
</action>
+ <action issue="COMPRESS-253" type="fix" date="2014-01-22">
+ SevenZFile failed claiming the dictionary was too large when
+ archives used LZMA compression for headers and content and
+ certain non-default dictinary sizes.
+ </action>
</release>
<release version="1.7" date="2014-01-20"
description="Release 1.7">
Modified:
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Coders.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Coders.java?rev=1560252&r1=1560251&r2=1560252&view=diff
==============================================================================
---
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Coders.java
(original)
+++
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Coders.java
Wed Jan 22 05:13:34 2014
@@ -109,7 +109,7 @@ class Coders {
byte propsByte = coder.properties[0];
long dictSize = coder.properties[1];
for (int i = 1; i < 4; i++) {
- dictSize |= (coder.properties[i + 1] << (8 * i));
+ dictSize |= (coder.properties[i + 1] & 0xffl) << (8 * i);
}
if (dictSize > LZMAInputStream.DICT_SIZE_MAX) {
throw new IOException("Dictionary larger than 4GiB maximum
size");
Modified:
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java?rev=1560252&r1=1560251&r2=1560252&view=diff
==============================================================================
---
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
(original)
+++
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
Wed Jan 22 05:13:34 2014
@@ -72,6 +72,22 @@ public class SevenZFileTest extends Abst
}
}
+ /**
+ * @see "https://issues.apache.org/jira/browse/COMPRESS-256"
+ */
+ public void testCompressedHeaderWithNonDefaultDictionarySize() throws
Exception {
+ SevenZFile sevenZFile = new SevenZFile(getFile("COMPRESS-256.7z"));
+ try {
+ int count = 0;
+ while (sevenZFile.getNextEntry() != null) {
+ count++;
+ }
+ assertEquals(446, count);
+ } finally {
+ sevenZFile.close();
+ }
+ }
+
private void test7zUnarchive(File f, byte[] password) throws Exception {
SevenZFile sevenZFile = new SevenZFile(f, password);
try {
Added: commons/proper/compress/trunk/src/test/resources/COMPRESS-256.7z
URL:
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/resources/COMPRESS-256.7z?rev=1560252&view=auto
==============================================================================
Binary file - no diff available.
Propchange: commons/proper/compress/trunk/src/test/resources/COMPRESS-256.7z
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream