summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Bodewig <bodewig@apache.org>2023-03-02 12:31:08 +0100
committerStefan Bodewig <bodewig@apache.org>2023-03-02 12:34:29 +0100
commit38b7e94c17c304aa3b7e13fc7d9ccdb47e4a4f89 (patch)
tree015323f1a25719ea0258c6408da5c0c2a7f8ce11
parent59e456372f96b85a7f1a012f607edfc6b8f459bc (diff)
downloadant-38b7e94c17c304aa3b7e13fc7d9ccdb47e4a4f89.tar.gz
properly handle File.list() returning null
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/Delete.java2
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/Sync.java10
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java3
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java4
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/optional/sound/SoundTask.java5
-rw-r--r--src/main/org/apache/tools/tar/TarEntry.java3
6 files changed, 22 insertions, 5 deletions
diff --git a/src/main/org/apache/tools/ant/taskdefs/Delete.java b/src/main/org/apache/tools/ant/taskdefs/Delete.java
index 82d84e10f..1917c8391 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Delete.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Delete.java
@@ -747,7 +747,7 @@ public class Delete extends MatchingTask {
if (!f.exists()) {
continue;
}
- if (!f.isDirectory() || f.list().length == 0) {
+ if (!f.isDirectory() || f.list() == null || f.list().length == 0) {
log("Deleting " + f, verbosity);
if (!delete(f) && failonerror) {
handle("Unable to delete "
diff --git a/src/main/org/apache/tools/ant/taskdefs/Sync.java b/src/main/org/apache/tools/ant/taskdefs/Sync.java
index 48eb6473d..34bed4400 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Sync.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Sync.java
@@ -110,7 +110,9 @@ public class Sync extends Task {
// If the destination directory didn't already exist,
// or was empty, then no previous file removal is necessary!
- boolean noRemovalNecessary = !toDir.exists() || toDir.list().length < 1;
+ String[] toDirChildren = toDir.list();
+ boolean noRemovalNecessary = !toDir.exists() || toDirChildren == null
+ || toDirChildren.length < 1;
// Copy all the necessary out-of-date files
log("PASS#1: Copying files to " + toDir, Project.MSG_DEBUG);
@@ -290,6 +292,7 @@ public class Sync extends Task {
int removedCount = 0;
if (dir.isDirectory()) {
File[] children = dir.listFiles();
+ if (children != null) {
for (File file : children) {
// Test here again to avoid method call for non-directories!
if (file.isDirectory()) {
@@ -297,12 +300,13 @@ public class Sync extends Task {
preservedEmptyDirectories);
}
}
- if (children.length > 0) {
+ }
+ if (children == null || children.length > 0) {
// This directory may have become empty...
// We need to re-query its children list!
children = dir.listFiles();
}
- if (children.length < 1 && removeIfEmpty
+ if ((children == null || children.length < 1) && removeIfEmpty
&& !preservedEmptyDirectories.contains(dir)) {
log("Removing empty directory: " + dir, Project.MSG_DEBUG);
dir.delete();
diff --git a/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java b/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
index ef2b1a727..78c556bb0 100644
--- a/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
+++ b/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
@@ -428,10 +428,13 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger {
if (performDirectoryScan) {
// Process all the directories marked for styling
for (String dir : scanner.getIncludedDirectories()) {
+ String[] elements = new File(baseDir, dir).list();
+ if (elements != null) {
for (String element : new File(baseDir, dir).list()) {
process(baseDir, dir + File.separator + element, destDir,
styleResource);
}
+ }
}
}
} else if (resources.isEmpty()) {
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java b/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java
index 480c4cab0..e9cdb103a 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java
@@ -255,6 +255,10 @@ public class jlink {
*/
private void addDirContents(ZipOutputStream output, File dir, String prefix,
boolean compress) throws IOException {
+ String[] names = dir.list();
+ if (names == null || names.length == 0) {
+ return;
+ }
for (String name : dir.list()) {
File file = new File(dir, name);
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sound/SoundTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/sound/SoundTask.java
index 9193627ef..1f0363318 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sound/SoundTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/sound/SoundTask.java
@@ -148,12 +148,15 @@ public class SoundTask extends Task {
if (source.isDirectory()) {
// get the list of files in the dir
Vector<File> files = new Vector<>();
- for (String file : source.list()) {
+ String[] fileNames = source.list();
+ if (fileNames != null) {
+ for (String file : fileNames) {
File f = new File(source, file);
if (f.isFile()) {
files.addElement(f);
}
}
+ }
if (files.size() < 1) {
throw new BuildException("No files found in directory " + source);
}
diff --git a/src/main/org/apache/tools/tar/TarEntry.java b/src/main/org/apache/tools/tar/TarEntry.java
index a47b25689..9dfdd50a3 100644
--- a/src/main/org/apache/tools/tar/TarEntry.java
+++ b/src/main/org/apache/tools/tar/TarEntry.java
@@ -824,6 +824,9 @@ public class TarEntry implements TarConstants {
}
String[] list = file.list();
+ if (list == null) {
+ return new TarEntry[0];
+ }
TarEntry[] result = new TarEntry[list.length];
for (int i = 0; i < list.length; ++i) {