billbarker    2004/01/06 21:32:44

  Modified:    jk/java/org/apache/jk/server JkCoyoteHandler.java
  Log:
  Adding the required PAs to allow the Coyote-Jk connector to play in the sandbox.
  
  Fix for Bug #25819.
  
  Reported By: Dario Bonino [EMAIL PROTECTED]
  
  Revision  Changes    Path
  1.47      +39 -2     
jakarta-tomcat-connectors/jk/java/org/apache/jk/server/JkCoyoteHandler.java
  
  Index: JkCoyoteHandler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/jk/server/JkCoyoteHandler.java,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- JkCoyoteHandler.java      30 Sep 2003 04:17:37 -0000      1.46
  +++ JkCoyoteHandler.java      7 Jan 2004 05:32:44 -0000       1.47
  @@ -64,6 +64,10 @@
   import java.net.InetAddress;
   import java.security.cert.CertificateFactory;
   import java.security.cert.X509Certificate;
  +import java.security.PrivilegedExceptionAction;
  +import java.security.AccessController;
  +import java.security.PrivilegedActionException;
  +import java.security.PrivilegedAction;
   
   import javax.management.MBeanServer;
   import javax.management.ObjectName;
  @@ -106,6 +110,17 @@
       private static org.apache.commons.logging.Log logTime=
           org.apache.commons.logging.LogFactory.getLog( "org.apache.jk.REQ_TIME" );
   
  +    // ----------------------------------------------------------- DoPrivileged
  +    private final class StatusLinePrivilegedAction implements PrivilegedAction {
  +     int status;
  +     StatusLinePrivilegedAction(int status) {
  +         this.status = status;
  +     }
  +     public Object run() {
  +         return HttpMessages.getMessage(status);
  +     }
  +    }
  +
       int headersMsgNote;
       int c2bConvertersNote;
       int tmpMessageBytesNote;
  @@ -330,7 +345,24 @@
           
           C2BConverter c2b=(C2BConverter)res.getNote( utfC2bNote );
           if( c2b==null ) {
  -            c2b=new C2BConverter(  "UTF8" );
  +            if(System.getSecurityManager() != null) {
  +                try {
  +                    c2b = (C2BConverter)
  +                        AccessController.doPrivileged(
  +                              new PrivilegedExceptionAction () {
  +                                      public Object run() 
  +                                          throws IOException{
  +                                          return new C2BConverter(  "UTF8" );
  +                                      }
  +                                  });
  +                } catch(PrivilegedActionException pae) {
  +                    Exception ex = pae.getException();
  +                    if(ex instanceof IOException)
  +                        throw (IOException)ex;
  +                }
  +            } else {
  +                c2b=new C2BConverter(  "UTF8" );
  +         }
               res.setNote( utfC2bNote, c2b );
           }
           
  @@ -347,7 +379,12 @@
           }
           String message=res.getMessage();
           if( message==null ){
  -            message= HttpMessages.getMessage(res.getStatus());
  +         if( System.getSecurityManager() != null ) {
  +             message = (String)AccessController.doPrivileged(
  +                                             new 
StatusLinePrivilegedAction(res.getStatus()));
  +         } else {
  +             message= HttpMessages.getMessage(res.getStatus());
  +         }
           } else {
               message = message.replace('\n', ' ').replace('\r', ' ');
           }
  
  
  

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

Reply via email to