Author: markt Date: Sun Jan 6 04:27:05 2008 New Revision: 609298 URL: http://svn.apache.org/viewvc?rev=609298&view=rev Log: Fix bug in CGI servlet that causes it to fail when included
Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java tomcat/container/tc5.5.x/webapps/docs/changelog.xml tomcat/current/tc5.5.x/STATUS.txt Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java?rev=609298&r1=609297&r2=609298&view=diff ============================================================================== --- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java (original) +++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java Sun Jan 6 04:27:05 2008 @@ -797,10 +797,26 @@ */ protected void setupFromRequest(HttpServletRequest req) throws UnsupportedEncodingException { - - this.contextPath = req.getContextPath(); - this.servletPath = req.getServletPath(); - this.pathInfo = req.getPathInfo(); + + boolean isIncluded = false; + + // Look to see if this request is an include + if (req.getAttribute(Globals.INCLUDE_REQUEST_URI_ATTR) != null) { + isIncluded = true; + } + if (isIncluded) { + this.contextPath = (String) req.getAttribute( + Globals.INCLUDE_CONTEXT_PATH_ATTR); + this.servletPath = (String) req.getAttribute( + Globals.INCLUDE_SERVLET_PATH_ATTR); + this.pathInfo = (String) req.getAttribute( + Globals.INCLUDE_PATH_INFO_ATTR); + } else { + this.contextPath = req.getContextPath(); + this.servletPath = req.getServletPath(); + this.pathInfo = req.getPathInfo(); + } + // If getPathInfo() returns null, must be using extension mapping // In this case, pathInfo should be same as servletPath if (this.pathInfo == null) { @@ -814,7 +830,13 @@ if (req.getMethod().equals("GET") || req.getMethod().equals("POST") || req.getMethod().equals("HEAD")) { - String qs = req.getQueryString(); + String qs; + if (isIncluded) { + qs = (String) req.getAttribute( + Globals.INCLUDE_QUERY_STRING_ATTR); + } else { + qs = req.getQueryString(); + } if (qs != null && qs.indexOf("=") == -1) { StringTokenizer qsTokens = new StringTokenizer(qs, "+"); while ( qsTokens.hasMoreTokens() ) { Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?rev=609298&r1=609297&r2=609298&view=diff ============================================================================== --- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original) +++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Sun Jan 6 04:27:05 2008 @@ -66,6 +66,10 @@ <fix> <bug>43687</bug> Remove conditional headers on Form Auth replay, since the UA (esp. FireFox) isn't expecting it. (billbarker) </fix> + <fix> + Fix bug in CGI Servlet that caused it to fail when a CGI resource was + included in another resource. (markt) + </fix> </changelog> </subsection> <subsection name="Jasper" > Modified: tomcat/current/tc5.5.x/STATUS.txt URL: http://svn.apache.org/viewvc/tomcat/current/tc5.5.x/STATUS.txt?rev=609298&r1=609297&r2=609298&view=diff ============================================================================== --- tomcat/current/tc5.5.x/STATUS.txt (original) +++ tomcat/current/tc5.5.x/STATUS.txt Sun Jan 6 04:27:05 2008 @@ -25,11 +25,6 @@ PATCHES PROPOSED TO BACKPORT: [ New proposals should be added at the end of the list ] -* Fix bug in CGI servlet that causes it to fail when included - http://svn.apache.org/viewvc?view=rev&revision=595802 - +1: markt, fhanik, funkman, pero - -1: - * JDT location return 404 http://people.apache.org/~fhanik/patches/jdt-loc.patch Backport from Tomcat 6 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]