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: [email protected]
For additional commands, e-mail: [email protected]