glenn       01/06/22 13:11:02

  Modified:    catalina/src/share/org/apache/catalina/loader
                        WebappClassLoader.java
  Log:
  Add support for JndiPermission
  
  Revision  Changes    Path
  1.4       +21 -14    
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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- WebappClassLoader.java    2001/06/22 17:29:22     1.3
  +++ WebappClassLoader.java    2001/06/22 20:11:01     1.4
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
 1.3 2001/06/22 17:29:22 remm Exp $
  - * $Revision: 1.3 $
  - * $Date: 2001/06/22 17:29:22 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
 1.4 2001/06/22 20:11:01 glenn Exp $
  + * $Revision: 1.4 $
  + * $Date: 2001/06/22 20:11:01 $
    *
    * ====================================================================
    *
  @@ -81,6 +81,7 @@
   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.cert.Certificate;
  @@ -100,6 +101,7 @@
   import javax.naming.NamingEnumeration;
   import javax.naming.NameClassPair;
   
  +import org.apache.naming.JndiPermission;
   import org.apache.naming.resources.ResourceAttributes;
   import org.apache.naming.resources.Resource;
   
  @@ -117,7 +119,7 @@
    *
    * @author Remy Maucherat
    * @author Craig R. McClanahan
  - * @version $Revision: 1.3 $ $Date: 2001/06/22 17:29:22 $
  + * @version $Revision: 1.4 $ $Date: 2001/06/22 20:11:01 $
    */
   public class WebappClassLoader
       extends URLClassLoader
  @@ -274,10 +276,10 @@
   
   
       /**
  -     * A list of read FilePermission's required if this loader
  +     * A list of read File and Jndi Permission's required if this loader
        * is for a web application context.
        */
  -    private ArrayList filePermissionList = new ArrayList();
  +    private ArrayList permissionList = new ArrayList();
   
   
       /**
  @@ -366,20 +368,24 @@
   
       /**
        * If there is a Java SecurityManager create a read FilePermission
  -     * for the file directory path.
  +     * or JndiPermission for the file directory path.
        *
        * @param path file directory path
        */
       public void setPermissions(String path) {
        if( securityManager != null ) {
  -            filePermissionList.add(new FilePermission(path + "-","read"));
  +            if( path.startsWith("jndi:") || path.startsWith("jar:jndi:") ) {
  +                permissionList.add(new JndiPermission(path + "*"));
  +            } else {
  +                permissionList.add(new FilePermission(path + "-","read"));
  +            }
        }
       }
   
   
       /**
  -     * If there is a Java SecurityManager add a read FilePermission
  -     * for URL.
  +     * If there is a Java SecurityManager create a read FilePermission
  +     * or JndiPermission for URL.
        *
        * @param url URL for a file or directory on local system
        */
  @@ -1188,7 +1194,8 @@
       /**
        * Get the Permissions for a CodeSource.  If this instance
        * of WebappClassLoader is for a web application context,
  -     * add read FilePermissions for the base directory (if unpacked),
  +     * add read FilePermission or JndiPermissions for the base
  +     * directory (if unpacked),
        * the context URL, and jar file resources.
        *
        * @param CodeSource where the code was loaded from
  @@ -1207,10 +1214,10 @@
           if ((pc = (PermissionCollection)loaderPC.get(codeUrl)) == null) {
               pc = super.getPermissions(codeSource);
               if (pc != null) {
  -                Iterator perms = filePermissionList.iterator();
  +                Iterator perms = permissionList.iterator();
                   while (perms.hasNext()) {
  -                    FilePermission fp = (FilePermission)perms.next();
  -                    pc.add(fp);
  +                    Permission p = (Permission)perms.next();
  +                    pc.add(p);
                   }
                   loaderPC.put(codeUrl,pc);
               }
  
  
  

Reply via email to