Skip to content

Commit 75f266f

Browse files
robinstkrosenvold
authored andcommitted
Fix NullPointerException when File#listFiles() returns null
See issue 1934 where the NPE is listed in a few comments. The problem is that File#listFiles() can return null, see documentation: http://docs.oracle.com/javase/7/docs/api/java/io/File.html#listFiles%28%29 This fixes all the listFiles call sites that aren't part of an assertion in a test case.
1 parent b24467b commit 75f266f

File tree

5 files changed

+33
-18
lines changed

5 files changed

+33
-18
lines changed

java/client/src/org/openqa/selenium/io/FileHandler.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,11 @@ public static boolean delete(File toDelete) {
129129
boolean deleted = true;
130130

131131
if (toDelete.isDirectory()) {
132-
for (File child : toDelete.listFiles()) {
133-
deleted &= child.canWrite() && delete(child);
132+
File[] children = toDelete.listFiles();
133+
if (children != null) {
134+
for (File child : children) {
135+
deleted &= child.canWrite() && delete(child);
136+
}
134137
}
135138
}
136139

java/client/src/org/openqa/selenium/io/Zip.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,11 @@ private void zip(File inputDir, OutputStream writeTo) throws IOException {
9393

9494
private void addToZip(String basePath, ZipOutputStream zos, File toAdd) throws IOException {
9595
if (toAdd.isDirectory()) {
96-
for (File file : toAdd.listFiles()) {
97-
addToZip(basePath, zos, file);
96+
File[] files = toAdd.listFiles();
97+
if (files != null) {
98+
for (File file : files) {
99+
addToZip(basePath, zos, file);
100+
}
98101
}
99102
} else {
100103
FileInputStream fis = new FileInputStream(toAdd);

java/client/test/com/thoughtworks/selenium/InternalSelenseTestBase.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,13 @@ public static void buildJavascriptLibraries() throws IOException {
8888
}
8989
File atomsDir = InProject.locate("build/javascript/selenium-atoms");
9090

91-
for (File file : atomsDir.listFiles()) {
92-
if (file.getName().endsWith(".js")) {
93-
File dest = new File(buildDir, file.getName());
94-
Files.copy(file, dest);
91+
File[] atomsFiles = atomsDir.listFiles();
92+
if (atomsFiles != null) {
93+
for (File file : atomsFiles) {
94+
if (file.getName().endsWith(".js")) {
95+
File dest = new File(buildDir, file.getName());
96+
Files.copy(file, dest);
97+
}
9598
}
9699
}
97100

@@ -100,10 +103,13 @@ public static void buildJavascriptLibraries() throws IOException {
100103

101104
File seDir = InProject.locate("java/client/test/com/thoughtworks/selenium");
102105
File destDir = InProject.locate("java/client/build/production/com/thoughtworks/selenium");
103-
for (File file : seDir.listFiles()) {
104-
if (file.getName().endsWith(".js")) {
105-
File dest = new File(destDir, file.getName());
106-
Files.copy(file, dest);
106+
File[] seFiles = seDir.listFiles();
107+
if (seFiles != null) {
108+
for (File file : seFiles) {
109+
if (file.getName().endsWith(".js")) {
110+
File dest = new File(destDir, file.getName());
111+
Files.copy(file, dest);
112+
}
107113
}
108114
}
109115

java/client/test/org/openqa/selenium/javascript/TestFileLocator.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,14 @@ public static List<File> findTestFiles() {
4848

4949
private static List<File> findTestFiles(File directory, FilenameFilter filter) {
5050
List<File> files = Lists.newLinkedList();
51-
for (File file : directory.listFiles()) {
52-
if (file.isDirectory()) {
53-
files.addAll(findTestFiles(file, filter));
54-
} else if (filter.accept(file.getParentFile(), file.getName())) {
55-
files.add(file);
51+
File[] list = directory.listFiles();
52+
if (list != null) {
53+
for (File file : list) {
54+
if (file.isDirectory()) {
55+
files.addAll(findTestFiles(file, filter));
56+
} else if (filter.accept(file.getParentFile(), file.getName())) {
57+
files.add(file);
58+
}
5659
}
5760
}
5861
return files;

java/server/src/org/openqa/selenium/remote/server/handler/UploadFile.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public String call() throws Exception {
4242
new Zip().unzip(file, tempDir);
4343
// Select the first file
4444
File[] allFiles = tempDir.listFiles();
45-
if (allFiles.length != 1) {
45+
if (allFiles == null || allFiles.length != 1) {
4646
throw new WebDriverException("Expected there to be only 1 file. There were: " +
4747
allFiles.length);
4848
}

0 commit comments

Comments
 (0)