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>"null"</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