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]

Reply via email to