!1 apache-commons-compress init
Merge pull request !1 from wisdoman/master
This commit is contained in:
commit
b86cd508a7
37
0001-Remove-Brotli-compressor.patch
Normal file
37
0001-Remove-Brotli-compressor.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
From bba585e9e4fdfc67de3b53b58b8d60923e1ccd0c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Simacek <msimacek@redhat.com>
|
||||||
|
Date: Mon, 12 Feb 2018 10:53:48 +0100
|
||||||
|
Subject: [PATCH 1/2] Remove Brotli compressor
|
||||||
|
|
||||||
|
---
|
||||||
|
.../commons/compress/compressors/CompressorStreamFactory.java | 7 +------
|
||||||
|
1 file changed, 1 insertion(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java b/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java
|
||||||
|
index d730b9d..ab178a9 100644
|
||||||
|
--- a/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java
|
||||||
|
+++ b/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java
|
||||||
|
@@ -31,8 +31,6 @@ import java.util.Set;
|
||||||
|
import java.util.SortedMap;
|
||||||
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
-import org.apache.commons.compress.compressors.brotli.BrotliCompressorInputStream;
|
||||||
|
-import org.apache.commons.compress.compressors.brotli.BrotliUtils;
|
||||||
|
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
|
||||||
|
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream;
|
||||||
|
import org.apache.commons.compress.compressors.deflate.DeflateCompressorInputStream;
|
||||||
|
@@ -586,10 +584,7 @@ public class CompressorStreamFactory implements CompressorStreamProvider {
|
||||||
|
}
|
||||||
|
|
||||||
|
if (BROTLI.equalsIgnoreCase(name)) {
|
||||||
|
- if (!BrotliUtils.isBrotliCompressionAvailable()) {
|
||||||
|
- throw new CompressorException("Brotli compression is not available." + YOU_NEED_BROTLI_DEC);
|
||||||
|
- }
|
||||||
|
- return new BrotliCompressorInputStream(in);
|
||||||
|
+ throw new CompressorException("Brotli compression is not available in this build.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (XZ.equalsIgnoreCase(name)) {
|
||||||
|
--
|
||||||
|
2.14.3
|
||||||
|
|
||||||
58
0002-Remove-ZSTD-compressor.patch
Normal file
58
0002-Remove-ZSTD-compressor.patch
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
From bab91e014f73296a8ac9a3aef2aaa324a85e9b96 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Simacek <msimacek@redhat.com>
|
||||||
|
Date: Mon, 12 Feb 2018 10:59:55 +0100
|
||||||
|
Subject: [PATCH 2/2] Remove ZSTD compressor
|
||||||
|
|
||||||
|
---
|
||||||
|
.../compress/compressors/CompressorStreamFactory.java | 14 ++------------
|
||||||
|
1 file changed, 2 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java b/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java
|
||||||
|
index ab178a9..3817704 100644
|
||||||
|
--- a/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java
|
||||||
|
+++ b/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java
|
||||||
|
@@ -54,9 +54,6 @@ import org.apache.commons.compress.compressors.xz.XZCompressorInputStream;
|
||||||
|
import org.apache.commons.compress.compressors.xz.XZCompressorOutputStream;
|
||||||
|
import org.apache.commons.compress.compressors.xz.XZUtils;
|
||||||
|
import org.apache.commons.compress.compressors.z.ZCompressorInputStream;
|
||||||
|
-import org.apache.commons.compress.compressors.zstandard.ZstdCompressorInputStream;
|
||||||
|
-import org.apache.commons.compress.compressors.zstandard.ZstdCompressorOutputStream;
|
||||||
|
-import org.apache.commons.compress.compressors.zstandard.ZstdUtils;
|
||||||
|
import org.apache.commons.compress.utils.IOUtils;
|
||||||
|
import org.apache.commons.compress.utils.Lists;
|
||||||
|
import org.apache.commons.compress.utils.ServiceLoaderIterator;
|
||||||
|
@@ -516,10 +513,6 @@ public class CompressorStreamFactory implements CompressorStreamProvider {
|
||||||
|
return LZ4_FRAMED;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (ZstdUtils.matches(signature, signatureLength)) {
|
||||||
|
- return ZSTANDARD;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
throw new CompressorException("No Compressor found for the stream signature.");
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
@@ -595,10 +588,7 @@ public class CompressorStreamFactory implements CompressorStreamProvider {
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ZSTANDARD.equalsIgnoreCase(name)) {
|
||||||
|
- if (!ZstdUtils.isZstdCompressionAvailable()) {
|
||||||
|
- throw new CompressorException("Zstandard compression is not available." + YOU_NEED_ZSTD_JNI);
|
||||||
|
- }
|
||||||
|
- return new ZstdCompressorInputStream(in);
|
||||||
|
+ throw new CompressorException("Zstandard compression is not available in this build.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (LZMA.equalsIgnoreCase(name)) {
|
||||||
|
@@ -714,7 +704,7 @@ public class CompressorStreamFactory implements CompressorStreamProvider {
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ZSTANDARD.equalsIgnoreCase(name)) {
|
||||||
|
- return new ZstdCompressorOutputStream(out);
|
||||||
|
+ throw new CompressorException("Zstandard compression is not available in this build.");
|
||||||
|
}
|
||||||
|
} catch (final IOException e) {
|
||||||
|
throw new CompressorException("Could not create CompressorOutputStream", e);
|
||||||
|
--
|
||||||
|
2.14.3
|
||||||
|
|
||||||
127
0003-COMPRESS-463-throw-exception-when-detecting-a-trunca.patch
Normal file
127
0003-COMPRESS-463-throw-exception-when-detecting-a-trunca.patch
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
From 2f169c27bf0252229c6a96ea18d9b6f9348c6b9e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Marian Koncek <mkoncek@redhat.com>
|
||||||
|
Date: Fri, 5 Oct 2018 13:10:18 +0200
|
||||||
|
Subject: [PATCH] COMPRESS-463 throw exception when detecting a truncated
|
||||||
|
stored entry
|
||||||
|
|
||||||
|
---
|
||||||
|
.../archivers/zip/ZipArchiveInputStream.java | 3 +-
|
||||||
|
.../zip/Maven221MultiVolumeTest.java | 7 ++
|
||||||
|
.../zip/ZipArchiveInputStreamTest.java | 69 +++++++++++++++++++
|
||||||
|
3 files changed, 78 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
|
||||||
|
index 729d92e..4c239ec 100644
|
||||||
|
--- a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
|
||||||
|
+++ b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
|
||||||
|
@@ -523,7 +523,8 @@ public class ZipArchiveInputStream extends ArchiveInputStream implements InputSt
|
||||||
|
buf.position(0);
|
||||||
|
final int l = in.read(buf.array());
|
||||||
|
if (l == -1) {
|
||||||
|
- return -1;
|
||||||
|
+ buf.limit(0);
|
||||||
|
+ throw new IOException("Truncated ZIP file");
|
||||||
|
}
|
||||||
|
buf.limit(l);
|
||||||
|
|
||||||
|
diff --git a/src/test/java/org/apache/commons/compress/archivers/zip/Maven221MultiVolumeTest.java b/src/test/java/org/apache/commons/compress/archivers/zip/Maven221MultiVolumeTest.java
|
||||||
|
index c28f3de..0a905e3 100644
|
||||||
|
--- a/src/test/java/org/apache/commons/compress/archivers/zip/Maven221MultiVolumeTest.java
|
||||||
|
+++ b/src/test/java/org/apache/commons/compress/archivers/zip/Maven221MultiVolumeTest.java
|
||||||
|
@@ -96,6 +96,13 @@ public class Maven221MultiVolumeTest {
|
||||||
|
assertEquals("Truncated ZIP file", e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
+ try {
|
||||||
|
+ zi.read(buffer);
|
||||||
|
+ fail("shouldn't be able to read from truncated entry after exception");
|
||||||
|
+ } catch (final IOException e) {
|
||||||
|
+ assertEquals("Truncated ZIP file", e.getMessage());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
// and now we get another entry, which should also yield
|
||||||
|
// an exception
|
||||||
|
try {
|
||||||
|
diff --git a/src/test/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStreamTest.java b/src/test/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStreamTest.java
|
||||||
|
index 5d1cdb1..5bf003b 100644
|
||||||
|
--- a/src/test/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStreamTest.java
|
||||||
|
+++ b/src/test/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStreamTest.java
|
||||||
|
@@ -340,6 +340,75 @@ public class ZipArchiveInputStreamTest {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ @Test
|
||||||
|
+ public void singleByteReadThrowsAtEofForCorruptedStoredEntry() throws Exception {
|
||||||
|
+ byte[] content;
|
||||||
|
+ try (FileInputStream fs = new FileInputStream(getFile("COMPRESS-264.zip"))) {
|
||||||
|
+ content = IOUtils.toByteArray(fs);
|
||||||
|
+ }
|
||||||
|
+ // make size much bigger than entry's real size
|
||||||
|
+ for (int i = 17; i < 26; i++) {
|
||||||
|
+ content[i] = (byte) 0xff;
|
||||||
|
+ }
|
||||||
|
+ try (ByteArrayInputStream in = new ByteArrayInputStream(content);
|
||||||
|
+ ZipArchiveInputStream archive = new ZipArchiveInputStream(in)) {
|
||||||
|
+ ArchiveEntry e = archive.getNextEntry();
|
||||||
|
+ try {
|
||||||
|
+ IOUtils.toByteArray(archive);
|
||||||
|
+ fail("expected exception");
|
||||||
|
+ } catch (IOException ex) {
|
||||||
|
+ assertEquals("Truncated ZIP file", ex.getMessage());
|
||||||
|
+ }
|
||||||
|
+ try {
|
||||||
|
+ archive.read();
|
||||||
|
+ fail("expected exception");
|
||||||
|
+ } catch (IOException ex) {
|
||||||
|
+ assertEquals("Truncated ZIP file", ex.getMessage());
|
||||||
|
+ }
|
||||||
|
+ try {
|
||||||
|
+ archive.read();
|
||||||
|
+ fail("expected exception");
|
||||||
|
+ } catch (IOException ex) {
|
||||||
|
+ assertEquals("Truncated ZIP file", ex.getMessage());
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Test
|
||||||
|
+ public void multiByteReadThrowsAtEofForCorruptedStoredEntry() throws Exception {
|
||||||
|
+ byte[] content;
|
||||||
|
+ try (FileInputStream fs = new FileInputStream(getFile("COMPRESS-264.zip"))) {
|
||||||
|
+ content = IOUtils.toByteArray(fs);
|
||||||
|
+ }
|
||||||
|
+ // make size much bigger than entry's real size
|
||||||
|
+ for (int i = 17; i < 26; i++) {
|
||||||
|
+ content[i] = (byte) 0xff;
|
||||||
|
+ }
|
||||||
|
+ byte[] buf = new byte[2];
|
||||||
|
+ try (ByteArrayInputStream in = new ByteArrayInputStream(content);
|
||||||
|
+ ZipArchiveInputStream archive = new ZipArchiveInputStream(in)) {
|
||||||
|
+ ArchiveEntry e = archive.getNextEntry();
|
||||||
|
+ try {
|
||||||
|
+ IOUtils.toByteArray(archive);
|
||||||
|
+ fail("expected exception");
|
||||||
|
+ } catch (IOException ex) {
|
||||||
|
+ assertEquals("Truncated ZIP file", ex.getMessage());
|
||||||
|
+ }
|
||||||
|
+ try {
|
||||||
|
+ archive.read(buf);
|
||||||
|
+ fail("expected exception");
|
||||||
|
+ } catch (IOException ex) {
|
||||||
|
+ assertEquals("Truncated ZIP file", ex.getMessage());
|
||||||
|
+ }
|
||||||
|
+ try {
|
||||||
|
+ archive.read(buf);
|
||||||
|
+ fail("expected exception");
|
||||||
|
+ } catch (IOException ex) {
|
||||||
|
+ assertEquals("Truncated ZIP file", ex.getMessage());
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
private static byte[] readEntry(ZipArchiveInputStream zip, ZipArchiveEntry zae) throws IOException {
|
||||||
|
final int len = (int)zae.getSize();
|
||||||
|
final byte[] buff = new byte[len];
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
||||||
59
apache-commons-compress.spec
Normal file
59
apache-commons-compress.spec
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
Name: apache-commons-compress
|
||||||
|
Version: 1.17
|
||||||
|
Release: 4
|
||||||
|
Summary: Java API for working with archivers and compressed files
|
||||||
|
License: ASL 2.0
|
||||||
|
URL: http://commons.apache.org/proper/commons-compress/
|
||||||
|
BuildArch: noarch
|
||||||
|
Source0: http://archive.apache.org/dist/commons/compress/source/commons-compress-%{version}-src.tar.gz
|
||||||
|
Patch0001: 0001-Remove-Brotli-compressor.patch
|
||||||
|
Patch0002: 0002-Remove-ZSTD-compressor.patch
|
||||||
|
Patch0003: 0003-COMPRESS-463-throw-exception-when-detecting-a-trunca.patch
|
||||||
|
BuildRequires: maven-local mvn(junit:junit) mvn(org.apache.commons:commons-parent:pom:)
|
||||||
|
BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) mvn(org.powermock:powermock-api-mockito)
|
||||||
|
BuildRequires: mvn(org.apache.maven.plugins:maven-antrun-plugin) mvn(org.osgi:org.osgi.core)
|
||||||
|
BuildRequires: mvn(org.powermock:powermock-module-junit4) mvn(org.tukaani:xz)
|
||||||
|
|
||||||
|
%description
|
||||||
|
The Apache Commons Compress library defines an API for working with
|
||||||
|
ar, cpio, Unix dump, tar, zip, gzip, XZ, Pack200 and bzip2 files.
|
||||||
|
|
||||||
|
%package help
|
||||||
|
Summary: API documentation for apache-commons-compress
|
||||||
|
|
||||||
|
Provides: %{name}-javadoc = %{version}-%{release}
|
||||||
|
Obsoletes: %{name}-javadoc < %{version}-%{release}
|
||||||
|
|
||||||
|
%description help
|
||||||
|
This package provides API documentation for apache-commons-compress.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -n commons-compress-%{version}-src -p1
|
||||||
|
%pom_remove_dep org.brotli:dec
|
||||||
|
rm -r src/{main,test}/java/org/apache/commons/compress/compressors/brotli
|
||||||
|
%pom_remove_dep :zstd-jni
|
||||||
|
rm -r src/{main,test}/java/org/apache/commons/compress/compressors/zstandard
|
||||||
|
rm src/test/java/org/apache/commons/compress/compressors/DetectCompressorTestCase.java
|
||||||
|
%pom_remove_dep org.ops4j.pax.exam:::test
|
||||||
|
%pom_remove_dep :org.apache.felix.framework::test
|
||||||
|
%pom_remove_dep :javax.inject::test
|
||||||
|
%pom_remove_dep :slf4j-api::test
|
||||||
|
rm src/test/java/org/apache/commons/compress/OsgiITest.java
|
||||||
|
|
||||||
|
%build
|
||||||
|
%mvn_file : commons-compress apache-commons-compress
|
||||||
|
%mvn_alias : commons:
|
||||||
|
%mvn_build
|
||||||
|
|
||||||
|
%install
|
||||||
|
%mvn_install
|
||||||
|
|
||||||
|
%files -f .mfiles
|
||||||
|
%doc LICENSE.txt NOTICE.txt
|
||||||
|
|
||||||
|
%files help -f .mfiles-javadoc
|
||||||
|
%doc NOTICE.txt
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Wed Dec 4 2019 Tianfei <tianfei16@huawei.com> - 1.17-4
|
||||||
|
- Package init
|
||||||
BIN
commons-compress-1.17-src.tar.gz
Normal file
BIN
commons-compress-1.17-src.tar.gz
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user