Author: markt Date: Tue Jul 26 15:31:12 2016 New Revision: 1754140 URL: http://svn.apache.org/viewvc?rev=1754140&view=rev Log: Add an encoding parameter to URLEncoder.encode() and be explicit about the encoding wherever Tomcat uses this method.
Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java tomcat/trunk/java/org/apache/catalina/core/StandardContext.java tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java tomcat/trunk/java/org/apache/catalina/ssi/SSIMediator.java tomcat/trunk/java/org/apache/catalina/util/URLEncoder.java tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=1754140&r1=1754139&r2=1754140&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Tue Jul 26 15:31:12 2016 @@ -764,7 +764,7 @@ public class CoyoteAdapter implements Ad // Possible redirect MessageBytes redirectPathMB = request.getMappingData().redirectPath; if (!redirectPathMB.isNull()) { - String redirectPath = URLEncoder.DEFAULT.encode(redirectPathMB.toString()); + String redirectPath = URLEncoder.DEFAULT.encode(redirectPathMB.toString(), "UTF-8"); String query = request.getQueryString(); if (request.isRequestedSessionIdFromURL()) { // This is not optimal, but as this is not very common, it Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=1754140&r1=1754139&r2=1754140&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java Tue Jul 26 15:31:12 2016 @@ -463,7 +463,7 @@ public class ApplicationContext implemen mappingData.recycle(); - String encodedUri = URLEncoder.DEFAULT.encode(uriCC.toString()); + String encodedUri = URLEncoder.DEFAULT.encode(uriCC.toString(), "UTF-8"); // Construct a RequestDispatcher to process this request return new ApplicationDispatcher(wrapper, encodedUri, wrapperPath, pathInfo, Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=1754140&r1=1754139&r2=1754140&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Tue Jul 26 15:31:12 2016 @@ -2030,7 +2030,7 @@ public class StandardContext extends Con log.warn(sm.getString( "standardContext.pathInvalid", path, this.path)); } - encodedPath = URLEncoder.DEFAULT.encode(this.path); + encodedPath = URLEncoder.DEFAULT.encode(this.path, "UTF-8"); if (getName() == null) { setName(this.path); } Modified: tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java?rev=1754140&r1=1754139&r2=1754140&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java Tue Jul 26 15:31:12 2016 @@ -430,10 +430,10 @@ public final class HTMLManagerServlet ex StringBuilder tmp = new StringBuilder(); tmp.append("path="); - tmp.append(URL_ENCODER.encode(displayPath)); + tmp.append(URL_ENCODER.encode(displayPath, "UTF-8")); if (ctxt.getWebappVersion().length() > 0) { tmp.append("&version="); - tmp.append(URL_ENCODER.encode(ctxt.getWebappVersion())); + tmp.append(URL_ENCODER.encode(ctxt.getWebappVersion(), "UTF-8")); } String pathVersion = tmp.toString(); @@ -445,7 +445,7 @@ public final class HTMLManagerServlet ex } args = new Object[7]; - args[0] = "<a href=\"" + URL_ENCODER.encode(contextPath + "/") + args[0] = "<a href=\"" + URL_ENCODER.encode(contextPath + "/", "UTF-8") + "\">" + RequestUtil.filter(displayPath) + "</a>"; if ("".equals(ctxt.getWebappVersion())) { args[1] = noVersion; Modified: tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java?rev=1754140&r1=1754139&r2=1754140&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java Tue Jul 26 15:31:12 2016 @@ -692,7 +692,7 @@ public class DefaultServlet extends Http * @return the rewritten path */ protected String rewriteUrl(String path) { - return URLEncoder.DEFAULT.encode( path ); + return URLEncoder.DEFAULT.encode(path, "UTF-8"); } Modified: tomcat/trunk/java/org/apache/catalina/ssi/SSIMediator.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ssi/SSIMediator.java?rev=1754140&r1=1754139&r2=1754140&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/ssi/SSIMediator.java (original) +++ tomcat/trunk/java/org/apache/catalina/ssi/SSIMediator.java Tue Jul 26 15:31:12 2016 @@ -296,7 +296,7 @@ public class SSIMediator { protected String encode(String value, String encoding) { String retVal = null; if (encoding.equalsIgnoreCase("url")) { - retVal = urlEncoder.encode(value); + retVal = urlEncoder.encode(value, "UTF-8"); } else if (encoding.equalsIgnoreCase("none")) { retVal = value; } else if (encoding.equalsIgnoreCase("entity")) { Modified: tomcat/trunk/java/org/apache/catalina/util/URLEncoder.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/util/URLEncoder.java?rev=1754140&r1=1754139&r2=1754140&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/util/URLEncoder.java (original) +++ tomcat/trunk/java/org/apache/catalina/util/URLEncoder.java Tue Jul 26 15:31:12 2016 @@ -67,13 +67,37 @@ public class URLEncoder { safeCharacters.set( c ); } - public String encode( String path ) { + + /** + * URL encodes the provided path using UTF-8. + * + * @param path The path to encode + * + * @return The encoded path + * + * @deprecated Use {@link #encode(String, String)} + */ + //@Deprecated + //public String encode(String path) { + // return encode(path, "UTF-8"); + //} + + + /** + * URL encodes the provided path using the given encoding. + * + * @param path The path to encode + * @param encoding The encoding to use to convert the path to bytes + * + * @return The encoded path + */ + public String encode(String path, String encoding) { int maxBytesPerChar = 10; StringBuilder rewrittenPath = new StringBuilder(path.length()); ByteArrayOutputStream buf = new ByteArrayOutputStream(maxBytesPerChar); OutputStreamWriter writer = null; try { - writer = new OutputStreamWriter(buf, "UTF8"); + writer = new OutputStreamWriter(buf, encoding); } catch (Exception e) { e.printStackTrace(); writer = new OutputStreamWriter(buf); Modified: tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java?rev=1754140&r1=1754139&r2=1754140&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java (original) +++ tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java Tue Jul 26 15:31:12 2016 @@ -433,7 +433,7 @@ public class RewriteValve extends ValveB if (context) { chunk.append(contextPath); } - chunk.append(URLEncoder.DEFAULT.encode(urlString)); + chunk.append(URLEncoder.DEFAULT.encode(urlString, "UTF-8")); request.getCoyoteRequest().requestURI().toChars(); // Decoded and normalized URI request.getCoyoteRequest().decodedURI().setString(null); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org