You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2019/11/25 17:04:51 UTC
[commons-io] branch master updated: [IO-643] NPE in
org.apache.commons.io.FileUtils.contentEquals(File,
File) when only one input is null.
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 8c8b770 [IO-643] NPE in org.apache.commons.io.FileUtils.contentEquals(File, File) when only one input is null.
8c8b770 is described below
commit 8c8b77006108b46d0693fe9bc9bde027582086c4
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Mon Nov 25 12:04:48 2019 -0500
[IO-643] NPE in org.apache.commons.io.FileUtils.contentEquals(File,
File) when only one input is null.
---
src/changes/changes.xml | 5 ++++-
src/main/java/org/apache/commons/io/FileUtils.java | 6 ++++++
src/test/java/org/apache/commons/io/FileUtilsTestCase.java | 3 +++
3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 35a79f0..03b7894 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -171,9 +171,12 @@ The <action> type attribute can be add,update,fix,remove.
<action issue="IO-641" dev="ggregory" type="add" due-to="Gary Gregory">
NPE in org.apache.commons.io.IOUtils.contentEquals(Reader, Reader) when only one input is null.
</action>
- <action issue="IO-642" dev="ggregory" type="add" due-to="Gary Gregory">
+ <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>
</release>
<release version="2.6" date="2017-10-15" description="Java 7 required, Java 9 supported.">
diff --git a/src/main/java/org/apache/commons/io/FileUtils.java b/src/main/java/org/apache/commons/io/FileUtils.java
index 5b00962..25c6c7b 100644
--- a/src/main/java/org/apache/commons/io/FileUtils.java
+++ b/src/main/java/org/apache/commons/io/FileUtils.java
@@ -388,6 +388,12 @@ public class FileUtils {
* @throws IOException in case of an I/O error
*/
public static boolean contentEquals(final File file1, final File file2) 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 0cc6002..924a3df 100644
--- a/src/test/java/org/apache/commons/io/FileUtilsTestCase.java
+++ b/src/test/java/org/apache/commons/io/FileUtilsTestCase.java
@@ -571,6 +571,9 @@ public class FileUtilsTestCase {
// Non-existent files
final File file = new File(temporaryFolder, getName());
final File file2 = new File(temporaryFolder, getName() + "2");
+ assertTrue(FileUtils.contentEquals(null, null));
+ assertFalse(FileUtils.contentEquals(null, file));
+ assertFalse(FileUtils.contentEquals(file, null));
// both don't exist
assertTrue(FileUtils.contentEquals(file, file));
assertTrue(FileUtils.contentEquals(file, file2));