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