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
The following commit(s) were added to refs/heads/master by this push: new 7fed4a3 [IO-644] NPE in org.apache.commons.io.FileUtils.contentEqualsIgnoreEOL(File, File) when only one input is null. 7fed4a3 is described below commit 7fed4a30e3cab9171de459bd24fb3b8d838cd126 Author: Gary Gregory <gardgreg...@gmail.com> AuthorDate: Mon Nov 25 12:07:08 2019 -0500 [IO-644] NPE in org.apache.commons.io.FileUtils.contentEqualsIgnoreEOL(File, File) when only one input is null. --- src/changes/changes.xml | 4 ++-- src/main/java/org/apache/commons/io/FileUtils.java | 6 ++++++ src/test/java/org/apache/commons/io/FileUtilsTestCase.java | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 03b7894..c709b31 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -174,8 +174,8 @@ The <action> type attribute can be add,update,fix,remove. <action issue="IO-643" dev="ggregory" type="add" due-to="Gary Gregory"> NPE in org.apache.commons.io.IOUtils.contentEqualsIgnoreEOL(Reader, Reader) when only one input is null. </action> - <action issue="IO-643" dev="ggregory" type="add" due-to="Gary Gregory"> - NPE in org.apache.commons.io.FileUtils.contentEquals(File, File) when only one input is null. + <action issue="IO-644" dev="ggregory" type="add" due-to="Gary Gregory"> + NPE in org.apache.commons.io.FileUtils.contentEqualsIgnoreEOL(File, File) when only one input is null. </action> </release> diff --git a/src/main/java/org/apache/commons/io/FileUtils.java b/src/main/java/org/apache/commons/io/FileUtils.java index 25c6c7b..4a2aa27 100644 --- a/src/main/java/org/apache/commons/io/FileUtils.java +++ b/src/main/java/org/apache/commons/io/FileUtils.java @@ -445,6 +445,12 @@ public class FileUtils { */ public static boolean contentEqualsIgnoreEOL(final File file1, final File file2, final String charsetName) throws IOException { + if (file1 == null && file2 == null) { + return true; + } + if (file1 == null ^ file2 == null) { + return false; + } final boolean file1Exists = file1.exists(); if (file1Exists != file2.exists()) { return false; diff --git a/src/test/java/org/apache/commons/io/FileUtilsTestCase.java b/src/test/java/org/apache/commons/io/FileUtilsTestCase.java index 924a3df..95f5343 100644 --- a/src/test/java/org/apache/commons/io/FileUtilsTestCase.java +++ b/src/test/java/org/apache/commons/io/FileUtilsTestCase.java @@ -630,6 +630,9 @@ public class FileUtilsTestCase { // Non-existent files final File file1 = new File(temporaryFolder, getName()); final File file2 = new File(temporaryFolder, getName() + "2"); + assertTrue(FileUtils.contentEqualsIgnoreEOL(null, null, null)); + assertFalse(FileUtils.contentEqualsIgnoreEOL(null, file1, null)); + assertFalse(FileUtils.contentEqualsIgnoreEOL(file1, null, null)); // both don't exist assertTrue(FileUtils.contentEqualsIgnoreEOL(file1, file1, null)); assertTrue(FileUtils.contentEqualsIgnoreEOL(file1, file2, null));