From: markt Date: Wed, 30 Jan 2008 23:24:48 +0000 (+0000) Subject: Fix bug 44282. Do call to getClassLoader() in a privileged block. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=b15b67ad5332ce1c9759d587506adfa6ddd069a3;p=tomcat7.0 Fix bug 44282. Do call to getClassLoader() in a privileged block. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@616953 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/loader/WebappClassLoader.java b/java/org/apache/catalina/loader/WebappClassLoader.java index 0b313a494..e0372731f 100644 --- a/java/org/apache/catalina/loader/WebappClassLoader.java +++ b/java/org/apache/catalina/loader/WebappClassLoader.java @@ -55,6 +55,7 @@ import javax.naming.NamingEnumeration; 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 @@ public class WebappClassLoader } + + protected final class PrivilegedGetClassLoader + implements PrivilegedAction { + + public Class clazz; + + public PrivilegedGetClassLoader(Class clazz){ + this.clazz = clazz; + } + + public ClassLoader run() { + return clazz.getClassLoader(); + } + } + + + // ------------------------------------------------------- Static Variables @@ -907,8 +925,17 @@ public class WebappClassLoader // 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); }