Author: markt
Date: Thu Dec 11 23:22:59 2014
New Revision: 1644793

URL: http://svn.apache.org/r1644793
Log:
Ensure that the URL resulting from the RewriteValve is normalized before it is 
used to map the request.

Modified:
    tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java
    tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java

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=1644793&r1=1644792&r2=1644793&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java Thu 
Dec 11 23:22:59 2014
@@ -48,6 +48,7 @@ import org.apache.catalina.util.URLEncod
 import org.apache.catalina.valves.ValveBase;
 import org.apache.tomcat.util.buf.CharChunk;
 import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.http.RequestUtil;
 import org.apache.tomcat.util.net.URL;
 
 public class RewriteValve extends ValveBase {
@@ -457,14 +458,14 @@ public class RewriteValve extends ValveB
                     }
                     chunk.append(URLEncoder.DEFAULT.encode(urlString));
                     request.getCoyoteRequest().requestURI().toChars();
-                    // Decoded URI
+                    // Decoded and normalized URI
                     request.getCoyoteRequest().decodedURI().setString(null);
                     chunk = 
request.getCoyoteRequest().decodedURI().getCharChunk();
                     chunk.recycle();
                     if (context) {
                         chunk.append(contextPath);
                     }
-                    chunk.append(urlString);
+                    chunk.append(RequestUtil.normalize(urlString));
                     request.getCoyoteRequest().decodedURI().toChars();
                     // Set the new Query if there is one
                     if (queryString != null) {

Modified: 
tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java?rev=1644793&r1=1644792&r2=1644793&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java 
(original)
+++ tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java 
Thu Dec 11 23:22:59 2014
@@ -17,7 +17,6 @@
 package org.apache.catalina.valves.rewrite;
 
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import org.apache.catalina.Context;
@@ -43,7 +42,6 @@ public class TestRewriteValve extends To
     }
 
     @Test
-    @Ignore // getRequestURI is not normalized
     public void testNonNormalizedPathRewrite() throws Exception {
         doTestRewrite("RewriteRule ^/b/(.*) /b/../a/$1", "/b/%255A", 
"/a/%255A");
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to