aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2014-09-14 07:54:29 +0200
committerSven Gothel <[email protected]>2014-09-14 07:54:58 +0200
commitd9e591cfcf7d87d9052d195649128c373f007df1 (patch)
tree6099f8affd0b3a206cdac99337579df8cbc54479
parent360c2d89e162616f5596dc83561601e0378bdb11 (diff)
Bug 1067 - IOUtil.testDirExec(File) needs to preserve SPACE in exetst.getCanonicalPath() command
Having a test-executable file with SPACE in it's temporary path, e.g. Unix: /magic temp/user/ Windows XP: C:\Documents and Settings\user\temp results to split up commands if using 'Process.exec(String)', since it utilizes a StringTokenizer to assemble the command String[]. This patch uses 'Process.exec(String[])' avoiding splitting up SPACE in the full command string/path. Major impact is on 'Windows XP', where a SPACE separated TEMP/TMP folder is the default. Note-1: Commit 9bc3d3f78bb2fb1aa0ccfb02ffb5bdda74420cac introduced testing executable permission on Windows (Bug 1015) and rendered this issue visible. To reproduce the issue on Windows: +++ set TEMP=C:\Documents and Settings\jogamp\temp set TMP=C:\Documents and Settings\jogamp\temp "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" +++ Note-2: This bug affects all platforms!
-rw-r--r--src/java/com/jogamp/common/util/IOUtil.java7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/java/com/jogamp/common/util/IOUtil.java b/src/java/com/jogamp/common/util/IOUtil.java
index 5819fbc..d5a9544 100644
--- a/src/java/com/jogamp/common/util/IOUtil.java
+++ b/src/java/com/jogamp/common/util/IOUtil.java
@@ -1120,7 +1120,9 @@ public class IOUtil {
fout.write(shellCode);
fout.close();
}
- final Process pr = Runtime.getRuntime().exec(exetst.getCanonicalPath());
+ // Using 'Process.exec(String[])' avoids StringTokenizer of 'Process.exec(String)'
+ // and hence splitting up command by spaces!
+ final Process pr = Runtime.getRuntime().exec(new String[] { exetst.getCanonicalPath() } );
/**
* Disable StreamMonitor, which throttles exec-test performance a lot!
*
@@ -1385,7 +1387,8 @@ public class IOUtil {
}
final File r = executable ? tempRootExec : tempRootNoexec ;
if(null == r) {
- throw new RuntimeException("Could not determine a temporary directory");
+ final String exe_s = executable ? "executable " : "";
+ throw new RuntimeException("Could not determine a temporary "+exe_s+"directory");
}
final FilePermission fp = new FilePermission(r.getAbsolutePath(), "read,write,delete");
SecurityUtil.checkPermission(fp);