FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Do not follow symlinks when deleting directories · dimr/processing@350bb2f · GitHub

Repository navigation

Commit 350bb2f

Browse files
committed
Do not follow symlinks when deleting directories
1 parent 72d92a2 commit 350bb2f

1 file changed

Lines changed: 16 additions & 11 deletions

File tree

‎app/src/processing/app/Util.java‎

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
package processing.app;
2424

2525
import java.io.*;
26+
import java.nio.file.Files;
27+
import java.nio.file.Path;
2628
import java.util.Enumeration;
2729
import java.util.Vector;
2830
import java.util.zip.*;
@@ -301,7 +303,7 @@ static public void copyDirNative(File sourceDir,
301303

302304
/**
303305
* Remove all files in a directory and the directory itself.
304-
* Prints error messages with failed filenames.
306+
* Prints error messages with failed filenames. Does not follow symlinks.
305307
*/
306308
static public boolean removeDir(File dir) {
307309
return removeDir(dir, true);
@@ -310,22 +312,25 @@ static public boolean removeDir(File dir) {
310312
/**
311313
* Remove all files in a directory and the directory itself.
312314
* Optinally prints error messages with failed filenames.
315+
* Does not follow symlinks.
313316
*/
314317
static public boolean removeDir(File dir, boolean printErrorMessages) {
315318
if (!dir.exists()) return true;
316319

317320
boolean result = true;
318-
File[] files = dir.listFiles();
319-
if (files != null) {
320-
for (File child : files) {
321-
if (child.isFile()) {
322-
boolean deleted = child.delete();
323-
if (!deleted && printErrorMessages) {
324-
System.err.println("Could not delete " + child.getAbsolutePath());
321+
if (!Files.isSymbolicLink(dir.toPath())) {
322+
File[] files = dir.listFiles();
323+
if (files != null) {
324+
for (File child : files) {
325+
if (child.isFile()) {
326+
boolean deleted = child.delete();
327+
if (!deleted && printErrorMessages) {
328+
System.err.println("Could not delete " + child.getAbsolutePath());
329+
}
330+
result &= deleted;
331+
} else if (child.isDirectory()) {
332+
result &= removeDir(child, printErrorMessages);
325333
}
326-
result &= deleted;
327-
} else if (child.isDirectory()) {
328-
result &= removeDir(child, printErrorMessages);
329334
}
330335
}
331336
}

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL