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]>