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());