This is an automated email from the ASF dual-hosted git repository.
garydgregory 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 d238c08a9 Fix NullPointerException when reading XZ entries in
ZipArchiveInputStream (#774)
d238c08a9 is described below
commit d238c08a9b4ce3cc47c79a59b318f5a89d4c57d1
Author: Zach Warneke <[email protected]>
AuthorDate: Mon Jun 29 17:03:37 2026 -0700
Fix NullPointerException when reading XZ entries in ZipArchiveInputStream
(#774)
* Fix NPE when reading XZ entries in ZipArchiveInputStream
* Fix formatting in ZipArchiveInputStream changes from previous commit.
* Update ZipArchiveInputStreamTest.java
---------
Co-authored-by: Gary Gregory <[email protected]>
---
.../compress/archivers/zip/ZipArchiveInputStream.java | 4 ++++
.../compress/archivers/zip/ZipArchiveInputStreamTest.java | 14 ++++++++++++++
2 files changed, 18 insertions(+)
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 8cc75880c..4ecfc3811 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
@@ -46,6 +46,7 @@
import org.apache.commons.compress.archivers.ArchiveInputStream;
import
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
import
org.apache.commons.compress.compressors.deflate64.Deflate64CompressorInputStream;
+import org.apache.commons.compress.compressors.xz.XZCompressorInputStream;
import
org.apache.commons.compress.compressors.zstandard.ZstdCompressorInputStream;
import org.apache.commons.compress.utils.ArchiveUtils;
import org.apache.commons.compress.utils.InputStreamStatistics;
@@ -929,6 +930,9 @@ public ZipArchiveEntry getNextZipEntry() throws IOException
{
case ENHANCED_DEFLATED:
current.inputStream = new
Deflate64CompressorInputStream(bis);
break;
+ case XZ:
+ current.inputStream = new XZCompressorInputStream(bis);
+ break;
case ZSTD:
case ZSTD_DEPRECATED:
current.inputStream = createZstdInputStream(bis);
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 df91f36ce..f56f1ad88 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
@@ -771,6 +771,20 @@ void testUnzipBZip2CompressedEntry() throws Exception {
}
}
+ @Test
+ void testUnzipXZCompressedEntry() throws Exception {
+ try (ZipArchiveInputStream in =
ZipArchiveInputStream.builder().setURI(getURI("org/apache/commons/compress/zip/test-method-xz.zip")).get())
{
+ final ZipArchiveEntry ze = in.getNextZipEntry();
+ final byte[] buf = IOUtils.toByteArray(in);
+ final String text = new String(buf);
+ assertEquals("LICENSE.txt", ze.getName());
+ assertEquals(11357, text.length());
+ assertTrue(text.startsWith("
Apache License"), text);
+ assertTrue(text.endsWith(" limitations under the License.\n"),
text);
+ assertEquals(11357, text.length());
+ }
+ }
+
/**
* @see "https://issues.apache.org/jira/browse/COMPRESS-176"
*/