glenn       01/06/22 13:10:49

  Modified:    catalina/src/share/org/apache/catalina/loader
                        StandardClassLoader.java
  Log:
  Add support for JndiPermission
  
  Revision  Changes    Path
  1.21      +18 -12    
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java
  
  Index: StandardClassLoader.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- StandardClassLoader.java  2001/06/22 02:04:11     1.20
  +++ StandardClassLoader.java  2001/06/22 20:10:49     1.21
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java,v
 1.20 2001/06/22 02:04:11 remm Exp $
  - * $Revision: 1.20 $
  - * $Date: 2001/06/22 02:04:11 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java,v
 1.21 2001/06/22 20:10:49 glenn Exp $
  + * $Revision: 1.21 $
  + * $Date: 2001/06/22 20:10:49 $
    *
    * ====================================================================
    *
  @@ -77,6 +77,7 @@
   import java.net.URLStreamHandler;
   import java.security.AccessControlException;
   import java.security.CodeSource;
  +import java.security.Permission;
   import java.security.PermissionCollection;
   import java.security.Policy;
   import java.util.ArrayList;
  @@ -87,6 +88,7 @@
   import java.util.jar.JarEntry;
   import java.util.jar.JarInputStream;
   import java.util.jar.Manifest;
  +import org.apache.naming.JndiPermission;
   
   
   /**
  @@ -110,7 +112,7 @@
    *
    * @author Craig R. McClanahan
    * @author Remy Maucherat
  - * @version $Revision: 1.20 $ $Date: 2001/06/22 02:04:11 $
  + * @version $Revision: 1.21 $ $Date: 2001/06/22 20:10:49 $
    */
   
   public class StandardClassLoader
  @@ -296,10 +298,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();
   
   
       /**
  @@ -387,20 +389,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.
  +     * or JndiPermission for URL.
        *
        * @param url URL for a file or directory on local system
        */
  @@ -1139,10 +1145,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