summaryrefslogtreecommitdiffstats
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:29 +0200
commit3a8515045c906b0174fb74f25b425f532b9cf2d1 (patch)
tree84297f169f8958576a0b389716f3454743a385be
parentc97e35377aea70cb293cabdd205bcc5da64b95c6 (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 d9fb9cf..76420db 100644
--- a/src/java/com/jogamp/common/util/IOUtil.java
+++ b/src/java/com/jogamp/common/util/IOUtil.java
@@ -821,7 +821,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!
*
@@ -1086,7 +1088,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);