jfarcand 2003/03/14 14:07:33 Modified: catalina/src/share/org/apache/catalina/core StandardWrapper.java Log: Add a do privileged block used when jsps are precompiled. Revision Changes Path 1.17 +39 -8 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardWrapper.java Index: StandardWrapper.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardWrapper.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- StandardWrapper.java 8 Mar 2003 06:58:11 -0000 1.16 +++ StandardWrapper.java 14 Mar 2003 22:07:33 -0000 1.17 @@ -70,6 +70,9 @@ import java.util.Enumeration; import java.util.HashMap; import java.util.Stack; +import java.security.AccessController; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; @@ -926,18 +929,46 @@ // Load the specified servlet class from the appropriate class loader Class classClass = null; try { - if (classLoader != null) { - classClass = classLoader.loadClass(actualClass); - } else { - classClass = Class.forName(actualClass); + if (System.getSecurityManager() != null){ + final ClassLoader fclassLoader = classLoader; + final String factualClass = actualClass; + try{ + classClass = (Class)AccessController.doPrivileged( + new PrivilegedExceptionAction(){ + public Object run() throws Exception{ + if (fclassLoader != null) { + return fclassLoader.loadClass(factualClass); + } else { + return Class.forName(factualClass); + } + } + }); + } catch(PrivilegedActionException pax){ + Exception ex = pax.getException(); + if (ex instanceof ClassNotFoundException){ + throw (ClassNotFoundException)ex; + } else { + log.error( "Error loading " + + fclassLoader + " " + factualClass, ex ); + } + } + } else { + if (classLoader != null) { + classClass = classLoader.loadClass(actualClass); + } else { + classClass = Class.forName(actualClass); + } } } catch (ClassNotFoundException e) { unavailable(null); + + log.error( "Error loading " + classLoader + " " + actualClass, e ); throw new ServletException (sm.getString("standardWrapper.missingClass", actualClass), e); } + if (classClass == null) { unavailable(null); throw new ServletException
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]