diff options
Diffstat (limited to 'netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java')
-rw-r--r-- | netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java index 104bf09..b353a9d 100644 --- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java @@ -815,7 +815,9 @@ public class JNLPClassLoader extends URLClassLoader { nativeDir = getNativeDir(); File outFile = new File(nativeDir, name); - + if (!outFile.isFile()) { + FileUtils.createRestrictedFile(outFile, true); + } CacheUtil.streamCopy(jarFile.getInputStream(e), new FileOutputStream(outFile)); @@ -837,12 +839,18 @@ public class JNLPClassLoader extends URLClassLoader { + File.separator + "netx-native-" + (new Random().nextInt() & 0xFFFF)); - if (!nativeDir.mkdirs()) + File parent = nativeDir.getParentFile(); + if (!parent.isDirectory() && !parent.mkdirs()) { return null; - else { + } + + try { + FileUtils.createRestrictedDirectory(nativeDir); // add this new native directory to the search path addNativeDirectory(nativeDir); return nativeDir; + } catch (IOException e) { + return null; } } |