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]