https://bz.apache.org/bugzilla/show_bug.cgi?id=66672

Eric Covener <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |NEEDINFO

--- Comment #4 from Eric Covener <[email protected]> ---
(In reply to Frank Meier from comment #3)
> Hi Eric,
> unfortunately the revised patch still leads to a regression in our test
> suite.
> 
> With RewriteRule: 
> `RewriteRule ^/mod_rewrite_before(.*)$ /mod_rewrite_after$1? [QSA,QSL]` 
> 
> and a request with encoded ? (%3f) in the path:
> `curl 'http://localhost/mod_rewrite_before/%3fxxx?param=123'`
> 
> leads now to splitting of the request path into the query. With 2.4.55: the
> the query was 'param=123' but with 2.4.57 (even with your patch) is:
> 'xxx&param=123'
> 
> In this case we use the '?' at the end of the substitution in combination
> with the [QSL] flag to secure the request from being split.
> 
> with mod_rewrite:trace8 i see the following difference in the logs:
> 2.4.55: `mod_rewrite.c(486): ... split uri=/mod_rewrite_after/?xxx? ->
> uri=/mod_rewrite_after/?xxx, args=param=123`
> 2.4.57: `mod_rewrite.c(493): ... split uri=/mod_rewrite_after/?xxx -> 
> uri=/mod_rewrite_after/, args=xxx&param=123`

Maybe we can tie this to QSL then, because that's what expects it to hang
around?

-        *(a2_end-1) = '\0'; /* trailing ? has done its job */
+        if (!(newrule->flags & RULEFLAG_QSLAST)) {
+            *(a2_end-1) = '\0'; /* trailing ? has done its job */
+        }

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to