tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jfarc...@apache.org
Subject cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session ManagerBase.java
Date Fri, 13 Dec 2002 21:50:21 GMT
jfarcand    2002/12/13 13:50:21

  Modified:    catalina/src/share/org/apache/catalina/session
                        ManagerBase.java
  Log:
  This class implementation doesn't work under the Security Manager. Fix the problem.
  
  Note: Always run watchdogs with the Security Manager before doing a commit ;-)
  
  Revision  Changes    Path
  1.7       +39 -15    jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/ManagerBase.java
  
  Index: ManagerBase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/ManagerBase.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ManagerBase.java	9 Dec 2002 19:07:36 -0000	1.6
  +++ ManagerBase.java	13 Dec 2002 21:50:21 -0000	1.7
  @@ -71,8 +71,10 @@
   import java.io.DataInputStream;
   import java.io.File;
   import java.io.FileInputStream;
  +import java.security.AccessController;
   import java.security.MessageDigest;
   import java.security.NoSuchAlgorithmException;
  +import java.security.PrivilegedAction;
   import java.util.ArrayList;
   import java.util.HashMap;
   import java.util.Random;
  @@ -221,6 +223,24 @@
        * The property change support for this component.
        */
       protected PropertyChangeSupport support = new PropertyChangeSupport(this);
  +    
  +    // ------------------------------------------------------------- Security classes
  +    private class PrivilegedSetRandomFile implements PrivilegedAction{
  +        
  +        public Object run(){               
  +            try {
  +                File f=new File( devRandomSource );
  +                if( ! f.exists() ) return null;
  +                randomIS= new DataInputStream( new FileInputStream(f));
  +                randomIS.readLong();
  +                if( log.isDebugEnabled() )
  +                    log.debug( "Opening " + devRandomSource );
  +                return randomIS;
  +            } catch (IOException ex){
  +                return null;
  +            }
  +        }
  +    }
   
   
       // ------------------------------------------------------------- Properties
  @@ -478,17 +498,21 @@
       public void setRandomFile( String s ) {
   	// as a hack, you can use a static file - and genarate the same
   	// session ids ( good for strange debugging )
  -	try {
  -	    devRandomSource=s;
  -	    File f=new File( devRandomSource );
  -	    if( ! f.exists() ) return;
  -	    randomIS= new DataInputStream( new FileInputStream(f));
  -	    randomIS.readLong();
  -	    if( log.isDebugEnabled() )
  -                log.debug( "Opening " + devRandomSource );
  -	} catch( IOException ex ) {
  -	    randomIS=null;
  -	}
  +        if (System.getSecurityManager() != null){
  +                randomIS = (DataInputStream)AccessController.doPrivileged(new PrivilegedSetRandomFile());
         
  +            } else {
  +                try{
  +                    devRandomSource=s;
  +                    File f=new File( devRandomSource );
  +                    if( ! f.exists() ) return;
  +                    randomIS= new DataInputStream( new FileInputStream(f));
  +                    randomIS.readLong();
  +                    if( log.isDebugEnabled() )
  +                        log.debug( "Opening " + devRandomSource );
  +                } catch( IOException ex ) {
  +                    randomIS=null;
  +                }
  +            }
       }
   
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:tomcat-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-dev-help@jakarta.apache.org>


Mime
View raw message