From b15b67ad5332ce1c9759d587506adfa6ddd069a3 Mon Sep 17 00:00:00 2001 From: markt Date: Wed, 30 Jan 2008 23:24:48 +0000 Subject: [PATCH] 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 --- .../apache/catalina/loader/WebappClassLoader.java | 31 ++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) 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); } -- 2.11.0