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-io.git
commit bcf8fbbc36eba7dabfbeb88af920f0dfcc6de355 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Thu Dec 21 20:42:01 2023 -0500 Avoid NullPointerException in IOCase.checkIndexOf(String, int, String) on null input --- src/changes/changes.xml | 1 + src/main/java/org/apache/commons/io/IOCase.java | 13 +++++++------ src/test/java/org/apache/commons/io/IOCaseTest.java | 9 ++++++--- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 56c4bf74..79481855 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -72,6 +72,7 @@ The <action> type attribute can be add,update,fix,remove. <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in FileFileFilter.accept(Path, BasicFileAttributes) on null input.</action> <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in HiddenFileFilter.accept(File) on null input.</action> <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in HiddenFileFilter.accept(Path, BasicFileAttributes) on null input.</action> + <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in IOCase.checkIndexOf(String, int, String) on null input.</action> <!-- Add --> <action dev="ggregory" type="fix" due-to="Gary Gregory">Add and use PathUtils.getFileName(Path, Function<Path, R>).</action> <action dev="ggregory" type="fix" due-to="Gary Gregory">Add and use PathUtils.getFileNameString().</action> diff --git a/src/main/java/org/apache/commons/io/IOCase.java b/src/main/java/org/apache/commons/io/IOCase.java index 1eabc9e9..2f6575a3 100644 --- a/src/main/java/org/apache/commons/io/IOCase.java +++ b/src/main/java/org/apache/commons/io/IOCase.java @@ -185,15 +185,16 @@ public enum IOCase { * @param search the start to search for, not null * @return the first index of the search String, * -1 if no match or {@code null} string input - * @throws NullPointerException if either string is null * @since 2.0 */ public int checkIndexOf(final String str, final int strStartIndex, final String search) { - final int endIndex = str.length() - search.length(); - if (endIndex >= strStartIndex) { - for (int i = strStartIndex; i <= endIndex; i++) { - if (checkRegionMatches(str, i, search)) { - return i; + if (str != null && search != null) { + final int endIndex = str.length() - search.length(); + if (endIndex >= strStartIndex) { + for (int i = strStartIndex; i <= endIndex; i++) { + if (checkRegionMatches(str, i, search)) { + return i; + } } } } diff --git a/src/test/java/org/apache/commons/io/IOCaseTest.java b/src/test/java/org/apache/commons/io/IOCaseTest.java index f8d72d6f..1112dbe2 100644 --- a/src/test/java/org/apache/commons/io/IOCaseTest.java +++ b/src/test/java/org/apache/commons/io/IOCaseTest.java @@ -152,6 +152,9 @@ public class IOCaseTest { public void test_checkIndexOf_case() { assertEquals(1, IOCase.SENSITIVE.checkIndexOf("ABC", 0, "BC")); assertEquals(-1, IOCase.SENSITIVE.checkIndexOf("ABC", 0, "Bc")); + assertEquals(-1, IOCase.SENSITIVE.checkIndexOf(null, 0, "Bc")); + assertEquals(-1, IOCase.SENSITIVE.checkIndexOf(null, 0, null)); + assertEquals(-1, IOCase.SENSITIVE.checkIndexOf("ABC", 0, null)); assertEquals(1, IOCase.INSENSITIVE.checkIndexOf("ABC", 0, "BC")); assertEquals(1, IOCase.INSENSITIVE.checkIndexOf("ABC", 0, "Bc")); @@ -199,9 +202,9 @@ public class IOCaseTest { // too long assertEquals(-1, IOCase.SENSITIVE.checkIndexOf("DEF", 0, "ABCDEFGHIJ")); - assertThrows(NullPointerException.class, () -> IOCase.SENSITIVE.checkIndexOf("ABC", 0, null)); - assertThrows(NullPointerException.class, () -> IOCase.SENSITIVE.checkIndexOf(null, 0, "ABC")); - assertThrows(NullPointerException.class, () -> IOCase.SENSITIVE.checkIndexOf(null, 0, null)); + assertEquals(-1, IOCase.SENSITIVE.checkIndexOf("ABC", 0, null)); + assertEquals(-1, IOCase.SENSITIVE.checkIndexOf(null, 0, "ABC")); + assertEquals(-1, IOCase.SENSITIVE.checkIndexOf(null, 0, null)); } @Test