amyroh      2002/12/05 18:49:39

  Modified:    catalina/src/share/org/apache/catalina/core
                        ApplicationDispatcher.java
  Log:
  Fix for bugtraq 4787595.
  Filter did not work correctly with JSPs as servlet <jsp-file>.
  
  Revision  Changes    Path
  1.6       +15 -15    
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java
  
  Index: ApplicationDispatcher.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ApplicationDispatcher.java        5 Dec 2002 15:44:30 -0000       1.5
  +++ ApplicationDispatcher.java        6 Dec 2002 02:49:39 -0000       1.6
  @@ -180,6 +180,7 @@
           this.wrapper = wrapper;
           this.context = (Context) wrapper.getParent();
           this.servletPath = servletPath;
  +        this.origServletPath = servletPath;
           this.pathInfo = pathInfo;
           this.queryString = queryString;
           this.name = name;
  @@ -281,7 +282,8 @@
        */
       private String servletPath = null;
   
  -
  +    private String origServletPath = null;
  +    
       /**
        * The StringManager for this package.
        */
  @@ -401,7 +403,7 @@
               if (request.getAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR) 
!= null){
                   Integer disInt = 
(Integer)request.getAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR);
                   if (disInt.intValue() != ApplicationFilterFactory.ERROR) {
  -                    
request.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
servletPath);
  +                    
request.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
origServletPath);
                       
request.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR, new 
Integer(ApplicationFilterFactory.FORWARD));
                   }
               }
  @@ -420,7 +422,7 @@
               if (request.getAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR) 
!= null){
                   Integer disInt = 
(Integer)request.getAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR);
                   if (disInt.intValue() != ApplicationFilterFactory.ERROR) {
  -                    
request.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
servletPath);
  +                    
request.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
origServletPath);
                       
request.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR, new 
Integer(ApplicationFilterFactory.FORWARD));
                   }
               }
  @@ -460,7 +462,7 @@
               if 
(wrequest.getAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR) != null){
                   Integer disInt = 
(Integer)request.getAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR);
                   if (disInt.intValue() != ApplicationFilterFactory.ERROR) {
  -                    
wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
servletPath);
  +                    
wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
origServletPath);
                       
wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR, new 
Integer(ApplicationFilterFactory.FORWARD));
                   }
               }
  @@ -539,7 +541,6 @@
       private void doInclude(ServletRequest request, ServletResponse response)
           throws ServletException, IOException
       {
  -
           // Set up to handle the specified request and response
           setup(request, response, true);
   
  @@ -553,9 +554,9 @@
   
               if ( log.isDebugEnabled() )
                   log.debug(" Non-HTTP Include");
  -             request.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
  +            request.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
                                                new 
Integer(ApplicationFilterFactory.INCLUDE));
  -             
request.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
servletPath);
  +            
request.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
origServletPath);
               invoke(request, outerResponse);
               unwrapResponse();
   
  @@ -574,7 +575,7 @@
                   wrequest.setServletPath(servletPath);
               wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
                                                new 
Integer(ApplicationFilterFactory.INCLUDE));
  -            
wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
servletPath);
  +            
wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
origServletPath);
               invoke(outerRequest, outerResponse);
               unwrapRequest();
               unwrapResponse();
  @@ -617,7 +618,7 @@
               
               wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
                                                new 
Integer(ApplicationFilterFactory.INCLUDE));
  -            
wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
servletPath);
  +            
wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
origServletPath);
               invoke(outerRequest, outerResponse);
               unwrapRequest();
               unwrapResponse();
  @@ -716,8 +717,7 @@
           // Get the FilterChain Here
           ApplicationFilterFactory factory = ApplicationFilterFactory.getInstance();
           ApplicationFilterChain filterChain = factory.createFilterChain(request,
  -                                                                                    
                     wrapper,
  -                                                                                    
                     servlet);
  +                                                                wrapper,servlet);
           // Call the service() method for the allocated servlet instance
           try {
               String jspFile = wrapper.getJspFile();
  
  
  

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

Reply via email to