glenn       01/06/26 14:02:20

  Modified:    catalina/src/share/org/apache/catalina/loader
                        WebappClassLoader.java
  Log:
  Fixed SecurityException when a JSP page is the first request
  
  Revision  Changes    Path
  1.7       +28 -28    
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
  
  Index: WebappClassLoader.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- WebappClassLoader.java    2001/06/24 01:16:06     1.6
  +++ WebappClassLoader.java    2001/06/26 21:02:18     1.7
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
 1.6 2001/06/24 01:16:06 remm Exp $
  - * $Revision: 1.6 $
  - * $Date: 2001/06/24 01:16:06 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
 1.7 2001/06/26 21:02:18 glenn Exp $
  + * $Revision: 1.7 $
  + * $Date: 2001/06/26 21:02:18 $
    *
    * ====================================================================
    *
  @@ -77,13 +77,12 @@
   import java.net.URLStreamHandlerFactory;
   import java.net.URLStreamHandler;
   import java.security.AccessControlException;
  -import java.security.PrivilegedAction;
   import java.security.AccessController;
  -import java.security.AccessControlContext;
   import java.security.CodeSource;
   import java.security.Permission;
   import java.security.PermissionCollection;
   import java.security.Policy;
  +import java.security.PrivilegedAction;
   import java.security.cert.Certificate;
   import java.util.ArrayList;
   import java.util.Enumeration;
  @@ -124,12 +123,29 @@
    *
    * @author Remy Maucherat
    * @author Craig R. McClanahan
  - * @version $Revision: 1.6 $ $Date: 2001/06/24 01:16:06 $
  + * @version $Revision: 1.7 $ $Date: 2001/06/26 21:02:18 $
    */
   public class WebappClassLoader
       extends URLClassLoader
       implements Reloader, Lifecycle {
   
  +    protected class PrivilegedFindResource
  +        implements PrivilegedAction {
  +
  +        private String name;
  +        private String path;
  +                    
  +        PrivilegedFindResource(String name, String path) {
  +            this.name = name;
  +            this.path = path;
  +        }           
  +                    
  +        public Object run() {
  +            return findResourceInternal(name, path);
  +        }           
  +
  +    }
  +
   
       // ----------------------------------------------------------- Constructors
   
  @@ -145,7 +161,6 @@
        this.parent = getParent();
        system = getSystemClassLoader();
        securityManager = System.getSecurityManager();
  -        accessController = AccessController.getContext();
   
       }
   
  @@ -161,7 +176,6 @@
        this.parent = getParent();
        system = getSystemClassLoader();
        securityManager = System.getSecurityManager();
  -        accessController = AccessController.getContext();
   
       }
   
  @@ -319,12 +333,6 @@
   
   
       /**
  -     * Access controller.
  -     */
  -    private AccessControlContext accessController;
  -
  -
  -    /**
        * Has this component been started?
        */
       protected boolean started = false;
  @@ -850,12 +858,9 @@
           ResourceEntry entry = (ResourceEntry) resourceEntries.get(name);
           if (entry == null) {
               if (securityManager != null) {
  -                entry = (ResourceEntry) AccessController.doPrivileged
  -                    (new PrivilegedAction() {
  -                            public Object run() {
  -                                return findResourceInternal(name, name);
  -                            }
  -                        }, accessController);
  +                PrivilegedAction dp =
  +                    new PrivilegedFindResource(name, name);
  +                entry = (ResourceEntry)AccessController.doPrivileged(dp);
               } else {
                   entry = findResourceInternal(name, name);
               }
  @@ -1369,14 +1374,9 @@
           ResourceEntry entry = null;
   
           if (securityManager != null) {
  -            final String fName = name;
  -            final String fClassPath = classPath;
  -            entry = (ResourceEntry) AccessController.doPrivileged
  -                (new PrivilegedAction() {
  -                        public Object run() {
  -                            return findResourceInternal(fName, fClassPath);
  -                        }
  -                    }, accessController);
  +            PrivilegedAction dp =
  +                new PrivilegedFindResource(name, classPath);
  +            entry = (ResourceEntry)AccessController.doPrivileged(dp);
           } else {
               entry = findResourceInternal(name, classPath);
           }
  
  
  

Reply via email to