Skip to content

Commit 8c8b770

Browse files
author
Gary Gregory
committed
[IO-643] NPE in org.apache.commons.io.FileUtils.contentEquals(File,
File) when only one input is null.
1 parent c936be4 commit 8c8b770

3 files changed

Lines changed: 13 additions & 1 deletion

File tree

src/changes/changes.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,9 +171,12 @@ The <action> type attribute can be add,update,fix,remove.
171171
<action issue="IO-641" dev="ggregory" type="add" due-to="Gary Gregory">
172172
NPE in org.apache.commons.io.IOUtils.contentEquals(Reader, Reader) when only one input is null.
173173
</action>
174-
<action issue="IO-642" dev="ggregory" type="add" due-to="Gary Gregory">
174+
<action issue="IO-643" dev="ggregory" type="add" due-to="Gary Gregory">
175175
NPE in org.apache.commons.io.IOUtils.contentEqualsIgnoreEOL(Reader, Reader) when only one input is null.
176176
</action>
177+
<action issue="IO-643" dev="ggregory" type="add" due-to="Gary Gregory">
178+
NPE in org.apache.commons.io.FileUtils.contentEquals(File, File) when only one input is null.
179+
</action>
177180
</release>
178181

179182
<release version="2.6" date="2017-10-15" description="Java 7 required, Java 9 supported.">

src/main/java/org/apache/commons/io/FileUtils.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,12 @@ private static void cleanDirectoryOnExit(final File directory) throws IOExceptio
388388
* @throws IOException in case of an I/O error
389389
*/
390390
public static boolean contentEquals(final File file1, final File file2) throws IOException {
391+
if (file1 == null && file2 == null) {
392+
return true;
393+
}
394+
if (file1 == null ^ file2 == null) {
395+
return false;
396+
}
391397
final boolean file1Exists = file1.exists();
392398
if (file1Exists != file2.exists()) {
393399
return false;

src/test/java/org/apache/commons/io/FileUtilsTestCase.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,9 @@ public void testContentEquals() throws Exception {
571571
// Non-existent files
572572
final File file = new File(temporaryFolder, getName());
573573
final File file2 = new File(temporaryFolder, getName() + "2");
574+
assertTrue(FileUtils.contentEquals(null, null));
575+
assertFalse(FileUtils.contentEquals(null, file));
576+
assertFalse(FileUtils.contentEquals(file, null));
574577
// both don't exist
575578
assertTrue(FileUtils.contentEquals(file, file));
576579
assertTrue(FileUtils.contentEquals(file, file2));

0 commit comments

Comments
 (0)