glenn       01/11/25 13:06:06

  Modified:    catalina/src/share/org/apache/catalina/core
                        ContainerBase.java
  Log:
  Tomcat 4 Java SecurityManager updates:
  
  Removed granting AllPermission to privileged webapps within Tomcat
  and moved back out into catalina.policy.
  
  Wrapped ContainerBase.addChild() with a doPrivileged to keep instances
  of Tomcat which use a very strict security policy happy.
  
  Revision  Changes    Path
  1.17      +39 -4     
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java
  
  Index: ContainerBase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- ContainerBase.java        2001/11/09 19:41:45     1.16
  +++ ContainerBase.java        2001/11/25 21:06:06     1.17
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v
 1.16 2001/11/09 19:41:45 remm Exp $
  - * $Revision: 1.16 $
  - * $Date: 2001/11/09 19:41:45 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v
 1.17 2001/11/25 21:06:06 glenn Exp $
  + * $Revision: 1.17 $
  + * $Date: 2001/11/25 21:06:06 $
    *
    * ====================================================================
    *
  @@ -68,6 +68,8 @@
   import java.beans.PropertyChangeListener;
   import java.beans.PropertyChangeSupport;
   import java.io.IOException;
  +import java.security.AccessController;
  +import java.security.PrivilegedAction;
   import java.util.ArrayList;
   import java.util.HashMap;
   import java.util.Hashtable;
  @@ -154,13 +156,36 @@
    * class comments of the implementation class.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.16 $ $Date: 2001/11/09 19:41:45 $
  + * @version $Revision: 1.17 $ $Date: 2001/11/25 21:06:06 $
    */
   
   public abstract class ContainerBase
       implements Container, Lifecycle, Pipeline {
   
   
  +    /**
  +     * Perform addChild with the permissions of this class.
  +     * addChild can be called with the XML parser on the stack,
  +     * this allows the XML parser to have fewer privileges than
  +     * Tomcat.
  +     */
  +    protected class PrivilegedAddChild
  +        implements PrivilegedAction {
  +
  +        private Container child;
  +
  +        PrivilegedAddChild(Container child) {
  +            this.child = child;
  +        }
  +
  +        public Object run() {
  +            addChildInternal(child);
  +            return null;
  +        }
  +
  +    }
  +
  +
       // ----------------------------------------------------- Instance Variables
   
   
  @@ -774,6 +799,16 @@
        *  child Containers
        */
       public void addChild(Container child) {
  +        if (System.getSecurityManager() != null) {
  +            PrivilegedAction dp =
  +                new PrivilegedAddChild(child);
  +            AccessController.doPrivileged(dp);
  +        } else {
  +            addChildInternal(child);
  +        }
  +    }
  +
  +    private void addChildInternal(Container child) {
   
           synchronized(children) {
               if (children.get(child.getName()) != null)
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to