From 3086c081ddf79dd3c76f79dad9937f71d67eb624 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Mon, 26 Mar 2012 12:34:04 -0700 Subject: [PATCH] Get ClassLoader within doPrivileged(). --- .../net/basic/GuacamoleClassLoader.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/GuacamoleClassLoader.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/GuacamoleClassLoader.java index 792015760..151b23c6b 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/GuacamoleClassLoader.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/GuacamoleClassLoader.java @@ -42,6 +42,9 @@ import java.io.FilenameFilter; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; +import java.security.AccessController; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.Collection; import net.sourceforge.guacamole.GuacamoleException; @@ -66,14 +69,21 @@ public class GuacamoleClassLoader extends ClassLoader { try { // Attempt to create singleton classloader which loads classes from // all .jar's in the lib directory defined in guacamole.properties - instance = new GuacamoleClassLoader( - GuacamoleProperties.getProperty(BasicGuacamoleProperties.LIB_DIRECTORY) - ); + instance = AccessController.doPrivileged(new PrivilegedExceptionAction() { + + @Override + public GuacamoleClassLoader run() throws GuacamoleException { + return new GuacamoleClassLoader( + GuacamoleProperties.getProperty(BasicGuacamoleProperties.LIB_DIRECTORY) + ); + } + + }); } - catch (GuacamoleException e) { + catch (PrivilegedActionException e) { // On error, record exception - exception = e; + exception = (GuacamoleException) e.getException(); } }