From ae2068dc166332f258db53e18dd75165ebd64851 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Mon, 8 Jan 2018 04:34:28 -0600 Subject: [PATCH] Port over remaining error handling This doesn't really belong here, but there's no sense in throwing it away--even here, it's a minor optimization. Signed-off-by: Samuel Holland --- .../java/com/wireguard/android/util/RootShell.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/com/wireguard/android/util/RootShell.java b/app/src/main/java/com/wireguard/android/util/RootShell.java index 35f4735..6c90118 100644 --- a/app/src/main/java/com/wireguard/android/util/RootShell.java +++ b/app/src/main/java/com/wireguard/android/util/RootShell.java @@ -58,6 +58,16 @@ public class RootShell { preamble = builder.toString(); } + private static boolean isExecutable(final String name) { + final String path = System.getenv("PATH"); + if (path == null) + return false; + for (final String dir : path.split(":")) + if (new File(dir, name).canExecute()) + return true; + return false; + } + /** * Run a command in a root shell. * @@ -68,6 +78,8 @@ public class RootShell { */ public int run(final List output, final String command) { int exitValue = -1; + if (!isExecutable("su")) + return OsConstants.EACCES; try { final ProcessBuilder builder = new ProcessBuilder(); builder.environment().put("LANG", "C");