From 3a88ae5db2236ec7f85412642efe1f42dc87bc3f Mon Sep 17 00:00:00 2001 From: jdf Date: Sun, 21 Feb 2010 03:09:19 +0000 Subject: [PATCH] Protect from bogus Windows PATH entries, which might have quotes. --- .../processing/app/tools/android/Android.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/app/src/processing/app/tools/android/Android.java b/app/src/processing/app/tools/android/Android.java index a6382da7e..e8f4db360 100644 --- a/app/src/processing/app/tools/android/Android.java +++ b/app/src/processing/app/tools/android/Android.java @@ -24,6 +24,8 @@ package processing.app.tools.android; import java.io.File; import java.io.IOException; import java.net.URL; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.swing.JOptionPane; //import java.util.ArrayList; @@ -114,6 +116,7 @@ public class Android implements Tool { } + private static final Pattern quotedPathElement = Pattern.compile("^\"([^\"]*)\"$"); protected boolean checkPath() { Platform platform = Base.getPlatform(); @@ -143,7 +146,19 @@ public class Android implements Tool { String envPath = platform.getenv("PATH"); String[] entries = PApplet.split(envPath, File.pathSeparatorChar); for (String entry : entries) { - String canonicalEntry = new File(entry).getCanonicalPath(); + entry = entry.trim(); + if (entry.length() == 0) + continue; + final Matcher m = quotedPathElement.matcher(entry); + if (m.matches()) + entry = m.group(1); // unquote + final String canonicalEntry; + try { + canonicalEntry = new File(entry).getCanonicalPath(); + } catch (IOException unexpected) { + System.err.println(unexpected); + continue; + } if (canonicalEntry.equals(canonicalTools)) { if (Base.isWindows()) { if (new File(toolsFolder, "android.bat").exists()) { @@ -991,7 +1006,6 @@ public class Android implements Tool { } } - /** * Create a release build of the sketch and install its apk files on the * attached device.