Author: markt Date: Wed Jan 30 15:24:48 2008 New Revision: 616953 URL: http://svn.apache.org/viewvc?rev=616953&view=rev Log: Fix bug 44282. Do call to getClassLoader() in a privileged block.
Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java?rev=616953&r1=616952&r2=616953&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java (original) +++ tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java Wed Jan 30 15:24:48 2008 @@ -55,6 +55,7 @@ import javax.naming.NamingException; import javax.naming.directory.DirContext; +import org.apache.catalina.Globals; import org.apache.catalina.Lifecycle; import org.apache.catalina.LifecycleException; import org.apache.catalina.LifecycleListener; @@ -129,6 +130,23 @@ } + + protected final class PrivilegedGetClassLoader + implements PrivilegedAction<ClassLoader> { + + public Class<?> clazz; + + public PrivilegedGetClassLoader(Class<?> clazz){ + this.clazz = clazz; + } + + public ClassLoader run() { + return clazz.getClassLoader(); + } + } + + + // ------------------------------------------------------- Static Variables @@ -907,8 +925,17 @@ // Return the class we have located if (log.isTraceEnabled()) log.debug(" Returning class " + clazz); - if ((log.isTraceEnabled()) && (clazz != null)) - log.debug(" Loaded by " + clazz.getClassLoader()); + + if ((log.isTraceEnabled()) && (clazz != null)) { + ClassLoader cl; + if (Globals.IS_SECURITY_ENABLED){ + cl = AccessController.doPrivileged( + new PrivilegedGetClassLoader(clazz)); + } else { + cl = clazz.getClassLoader(); + } + log.debug(" Loaded by " + cl.toString()); + } return (clazz); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]