This is an automated email from the ASF dual-hosted git repository. rmaucher pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 86a4e04097af792a52281c9bfc3244dc6f25c340 Author: opencode <[email protected]> AuthorDate: Mon Oct 12 14:01:42 2026 +0200 Reject RewriteCond and RewriteRule lines with extra tokens The flag token was the last token expected on a RewriteCond or RewriteRule line. Any further tokens were discarded without an error, so a mis-tokenized or mistyped line silently behaved as if the extra tokens were not there instead of failing at configuration time. Throw the invalid line error when tokens remain after the flags, as is already done when a line does not provide enough tokens. --- java/org/apache/catalina/valves/rewrite/RewriteValve.java | 8 ++++++++ test/org/apache/catalina/valves/rewrite/TestRewriteValve.java | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/java/org/apache/catalina/valves/rewrite/RewriteValve.java b/java/org/apache/catalina/valves/rewrite/RewriteValve.java index 923f6d5e16..1f744ff49e 100644 --- a/java/org/apache/catalina/valves/rewrite/RewriteValve.java +++ b/java/org/apache/catalina/valves/rewrite/RewriteValve.java @@ -696,6 +696,10 @@ public class RewriteValve extends ValveBase { parseCondFlag(line, condition, flagsTokenizer.nextToken()); } } + if (tokenizer.hasMoreTokens()) { + // Too many tokens on the line + throw new IllegalArgumentException(sm.getString("rewriteValve.invalidLine", line)); + } return condition; } else if (token.equals("RewriteRule")) { // RewriteRule Pattern Substitution [Flags] @@ -720,6 +724,10 @@ public class RewriteValve extends ValveBase { rule.setQsappend(false); } } + if (tokenizer.hasMoreTokens()) { + // Too many tokens on the line + throw new IllegalArgumentException(sm.getString("rewriteValve.invalidLine", line)); + } return rule; } else if (token.equals("RewriteMap")) { // RewriteMap name rewriteMapClassName whateverOptionalParameterInWhateverFormat diff --git a/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java b/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java index d2a678e516..011ea5348c 100644 --- a/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java +++ b/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java @@ -280,6 +280,16 @@ public class TestRewriteValve extends TomcatBaseTest { doTestRewrite("RewriteRule /b/(.*).html$ /c%{SERVLET_PATH}", "/b/x.html", "/c/b/x.html"); } + @Test(expected = IllegalArgumentException.class) + public void testRewriteRuleExtraToken() throws Exception { + doTestRewrite("RewriteRule /b/.* /c [L] extra", "/b/a.html", "/c"); + } + + @Test(expected = IllegalArgumentException.class) + public void testRewriteCondExtraToken() throws Exception { + doTestRewrite("RewriteCond %{REQUEST_URI} ^/b.* [NC] extra\n" + "RewriteRule /b/.* /c", "/b/a.html", "/c"); + } + @Test public void testRewriteEnvVarAndServerVar() throws Exception { System.setProperty("some_variable", "something"); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
