This is an automated email from the ASF dual-hosted git repository.

ggregory 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 926812a9f ZipEncodingHelper.getZipEncoding(*) can throw 
NullPointerException and IllegalArgumentException on bad input instead of 
returning a value using the default Charset
926812a9f is described below

commit 926812a9fcf9987f1f45a0ae0e80ef008f71adc7
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Wed May 21 12:04:20 2025 -0400

    ZipEncodingHelper.getZipEncoding(*) can throw NullPointerException and
    IllegalArgumentException on bad input instead of returning a value using
    the default Charset
---
 src/changes/changes.xml                                       |  1 +
 .../commons/compress/archivers/zip/ZipEncodingHelper.java     |  3 +--
 .../commons/compress/archivers/zip/ZipEncodingHelperTest.java | 11 +++++++++++
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 98a74dc66..84947fdfc 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -94,6 +94,7 @@ The <action> type attribute can be add,update,fix,remove.
       <action type="fix" dev="ggregory" due-to="Gary 
Gregory">PasswordRequiredException now extends CompressException instead of 
IOException (CompressException extends IOException).</action>
       <action type="fix" dev="ggregory" due-to="Gary Gregory">Pack200Exception 
now extends CompressException instead of IOException (CompressException extends 
IOException).</action>
       <action type="fix" dev="ggregory" due-to="Gary 
Gregory">ArArchiveInputStream.getBSDLongName(String) now throws its 
EOFException with a message.</action>
+      <action type="fix" dev="ggregory" due-to="Gary 
Gregory">ZipEncodingHelper.getZipEncoding(*) can throw NullPointerException and 
IllegalArgumentException on bad input instead of returning a value using the 
default Charset.</action>
       <!-- ADD -->
       <action type="add" dev="ggregory" due-to="Gary Gregory">Add 
GzipParameters.getModificationInstant().</action>
       <action type="add" dev="ggregory" due-to="Gary Gregory">Add 
GzipParameters.setModificationInstant(Instant).</action>
diff --git 
a/src/main/java/org/apache/commons/compress/archivers/zip/ZipEncodingHelper.java
 
b/src/main/java/org/apache/commons/compress/archivers/zip/ZipEncodingHelper.java
index 025db4fa6..6ea754fdf 100644
--- 
a/src/main/java/org/apache/commons/compress/archivers/zip/ZipEncodingHelper.java
+++ 
b/src/main/java/org/apache/commons/compress/archivers/zip/ZipEncodingHelper.java
@@ -23,7 +23,6 @@
 
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
-import java.nio.charset.UnsupportedCharsetException;
 
 import org.apache.commons.io.Charsets;
 
@@ -112,7 +111,7 @@ private static boolean isUTF8Alias(final String actual) {
     private static Charset toSafeCharset(final String name) {
         try {
             return Charsets.toCharset(name);
-        } catch (final UnsupportedCharsetException ignored) {
+        } catch (final IllegalArgumentException | NullPointerException 
ignored) {
             return Charset.defaultCharset();
         }
     }
diff --git 
a/src/test/java/org/apache/commons/compress/archivers/zip/ZipEncodingHelperTest.java
 
b/src/test/java/org/apache/commons/compress/archivers/zip/ZipEncodingHelperTest.java
index e9f8a60dc..69039b5da 100644
--- 
a/src/test/java/org/apache/commons/compress/archivers/zip/ZipEncodingHelperTest.java
+++ 
b/src/test/java/org/apache/commons/compress/archivers/zip/ZipEncodingHelperTest.java
@@ -35,6 +35,17 @@ public void testGetZipEncodingForDefault() {
         assertEquals(Charset.defaultCharset(), ((NioZipEncoding) 
ZipEncodingHelper.getZipEncoding(Charset.defaultCharset().name())).getCharset());
     }
 
+    @Test
+    public void testGetZipEncodingForIllegalName() {
+        assertEquals(Charset.defaultCharset(), ((NioZipEncoding) 
ZipEncodingHelper.getZipEncoding("")).getCharset());
+    }
+
+    @Test
+    public void testGetZipEncodingForNull() {
+        assertEquals(Charset.defaultCharset(), ((NioZipEncoding) 
ZipEncodingHelper.getZipEncoding((Charset) null)).getCharset());
+        assertEquals(Charset.defaultCharset(), ((NioZipEncoding) 
ZipEncodingHelper.getZipEncoding((String) null)).getCharset());
+    }
+
     @Test
     public void testGetZipEncodingForUnknown() {
         assertEquals(Charset.defaultCharset(), ((NioZipEncoding) 
ZipEncodingHelper.getZipEncoding("X")).getCharset());

Reply via email to