You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2017/05/04 14:54:58 UTC

svn commit: r1793819 - in /tomcat/trunk: java/org/apache/catalina/ssi/SSIServletExternalResolver.java webapps/docs/changelog.xml

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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org