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 2016/11/28 14:05:11 UTC

svn commit: r1771743 - in /tomcat/trunk: java/org/apache/catalina/valves/rewrite/Substitution.java test/org/apache/catalina/valves/rewrite/TestRewriteValve.java webapps/docs/changelog.xml

Author: markt
Date: Mon Nov 28 14:05:11 2016
New Revision: 1771743

URL: http://svn.apache.org/viewvc?rev=1771743&view=rev
Log:
In the RewriteValve write empty capture groups as the empty string rather "null" when generating the re-written URL.
Based on a patch by Michael Osipov.

Modified:
    tomcat/trunk/java/org/apache/catalina/valves/rewrite/Substitution.java
    tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/catalina/valves/rewrite/Substitution.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/rewrite/Substitution.java?rev=1771743&r1=1771742&r2=1771743&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/valves/rewrite/Substitution.java (original)
+++ tomcat/trunk/java/org/apache/catalina/valves/rewrite/Substitution.java Mon Nov 28 14:05:11 2016
@@ -40,14 +40,18 @@ public class Substitution {
         public int n;
         @Override
         public String evaluate(Matcher rule, Matcher cond, Resolver resolver) {
+            String result = rule.group(n);
+            if (result == null) {
+                result = "";
+            }
             if (escapeBackReferences) {
                 // Note: This should be consistent with the way httpd behaves.
                 //       We might want to consider providing a dedicated decoder
                 //       with an option to add additional safe characters to
                 //       provide users with more flexibility
-                return RewriteValve.ENCODER.encode(rule.group(n), resolver.getUriEncoding());
+                return RewriteValve.ENCODER.encode(result, resolver.getUriEncoding());
             } else {
-                return rule.group(n);
+                return result;
             }
         }
     }
@@ -56,7 +60,7 @@ public class Substitution {
         public int n;
         @Override
         public String evaluate(Matcher rule, Matcher cond, Resolver resolver) {
-            return cond.group(n);
+            return (cond.group(n) == null ? "" : cond.group(n));
         }
     }
 
@@ -95,7 +99,7 @@ public class Substitution {
     public class MapElement extends SubstitutionElement {
         public RewriteMap map = null;
         public String key;
-        public String defaultValue = null;
+        public String defaultValue = "";
         public int n;
         @Override
         public String evaluate(Matcher rule, Matcher cond, Resolver resolver) {

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=1771743&r1=1771742&r2=1771743&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java (original)
+++ tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java Mon Nov 28 14:05:11 2016
@@ -554,6 +554,18 @@ public class TestRewriteValve extends To
     }
 
 
+    @Test
+    public void testBackReferenceRewrite() throws Exception {
+        doTestRewrite("RewriteRule ^/b/(rest)?$ /c/$1", "/b/rest", "/c/rest");
+    }
+
+
+    @Test
+    public void testEmptyBackReferenceRewrite() throws Exception {
+        doTestRewrite("RewriteRule ^/b/(rest)?$ /c/$1", "/b/", "/c/");
+    }
+
+
     private void doTestRewrite(String config, String request, String expectedURI) throws Exception {
         doTestRewrite(config, request, expectedURI, null);
     }

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1771743&r1=1771742&r2=1771743&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Mon Nov 28 14:05:11 2016
@@ -143,6 +143,12 @@
         redirect response to the user agent. Patch provided by Michael Osipov.
         (markt)
       </fix>
+      <fix>
+        <bug>60413</bug>: In the <code>RewriteValve</code> write empty capture
+        groups as the empty string rather than as <code>&quot;null&quot;</code>
+        when generating the re-written URL. Based on a patch by Michael Osipov.
+        (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