Author: markt Date: Thu May 4 14:54:58 2017 New Revision: 1793819 URL: http://svn.apache.org/viewvc?rev=1793819&view=rev Log: Correct the logic that selects the encoding to use to decode the query string in the SSIServletExternalResolver so that the useBodyEncodingForURI attribute of the Connector is correctly taken into account.
Modified: tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java?rev=1793819&r1=1793818&r2=1793819&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java (original) +++ tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java Thu May 4 14:54:58 2017 @@ -33,6 +33,7 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.catalina.connector.Connector; import org.apache.catalina.connector.Request; import org.apache.coyote.Constants; import org.apache.tomcat.util.buf.B2CConverter; @@ -243,10 +244,6 @@ public class SSIServletExternalResolver } else if (nameParts[2].equals("UNESCAPED")) { requiredParts = 3; if (queryString != null) { - // Use default as a last resort - String queryStringEncoding = - Constants.DEFAULT_CHARACTER_ENCODING; - String uriEncoding = null; boolean useBodyEncodingForURI = false; @@ -254,24 +251,25 @@ public class SSIServletExternalResolver // possible String requestEncoding = req.getCharacterEncoding(); if (req instanceof Request) { - uriEncoding = - ((Request)req).getConnector().getURIEncoding(); - useBodyEncodingForURI = ((Request)req) - .getConnector().getUseBodyEncodingForURI(); + Connector connector = ((Request)req).getConnector(); + uriEncoding = connector.getURIEncoding(); + useBodyEncodingForURI = connector.getUseBodyEncodingForURI(); } + String queryStringEncoding; + // If valid, apply settings from request / connector - if (uriEncoding != null) { + if (useBodyEncodingForURI && requestEncoding != null) { + queryStringEncoding = requestEncoding; + } else if (uriEncoding != null) { queryStringEncoding = uriEncoding; - } else if(useBodyEncodingForURI) { - if (requestEncoding != null) { - queryStringEncoding = requestEncoding; - } + } else { + // Use default as a last resort + queryStringEncoding = Constants.DEFAULT_CHARACTER_ENCODING; } try { - retVal = URLDecoder.decode(queryString, - queryStringEncoding); + retVal = URLDecoder.decode(queryString, queryStringEncoding); } catch (UnsupportedEncodingException e) { retVal = queryString; } Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1793819&r1=1793818&r2=1793819&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Thu May 4 14:54:58 2017 @@ -112,6 +112,12 @@ <bug>61047</bug>: Add MIME mapping for woff2 fonts in the default web.xml. Patch provided by Justin Williamson. (violetagg) </add> + <fix> + Correct the logic that selects the encoding to use to decode the query + string in the <code>SSIServletExternalResolver</code> so that the + <code>useBodyEncodingForURI</code> attribute of the + <code>Connector</code> is correctly taken into account. (markt) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org