From d3b4d35b2a1930603795263a2f4ec60b106281de Mon Sep 17 00:00:00 2001 From: Leonid Plyushch Date: Mon, 25 Jun 2018 13:23:03 +0300 Subject: [PATCH] deleteFolder(): don't treat symlinks as directory --- app/src/main/java/com/termux/app/TermuxInstaller.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/termux/app/TermuxInstaller.java b/app/src/main/java/com/termux/app/TermuxInstaller.java index 93ad1db6..0ea5a46b 100644 --- a/app/src/main/java/com/termux/app/TermuxInstaller.java +++ b/app/src/main/java/com/termux/app/TermuxInstaller.java @@ -21,6 +21,7 @@ import com.termux.terminal.EmulatorDebug; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; +import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; @@ -209,11 +210,15 @@ final class TermuxInstaller { } /** Delete a folder and all its content or throw. */ - static void deleteFolder(File fileOrDirectory) { + static void deleteFolder(File fileOrDirectory) throws IOException { File[] children = fileOrDirectory.listFiles(); if (children != null) { for (File child : children) { - deleteFolder(child); + if (child.getCanonicalFile().equals(child.getAbsoluteFile())) { + deleteFolder(child); + } else { + child.delete(); + } } } if (!fileOrDirectory.delete()) { @@ -231,7 +236,7 @@ final class TermuxInstaller { if (storageDir.exists()) { try { deleteFolder(storageDir); - } catch (Exception e) { + } catch (IOException e) { Log.e(LOG_TAG, "Could not delete old $HOME/storage, " + e.getMessage()); return; }