From 38982673f266a10ac1da736198aa83adb8b3b3c1 Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Thu, 2 Feb 2012 15:43:41 +0000 Subject: [PATCH] treat a rewriterule substitution that expands to "-" as if the rule had a literal "-". git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1239679 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 4 ++++ modules/mappers/mod_rewrite.c | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index fcb3cfd4ad..00dc082104 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,10 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.0 + *) mod_rewrite: Treat a RewriteRule substitution that expands to + "-" to behave as if a literal "-" was used in the RewriteRule + (no substitution). [Eric Covener] + *) mod_authnz_ldap: Don't try a potentially expensive nested groups search before exhausting all AuthLDAPGroupAttribute checks on the current group. PR52464 [Eric Covener] diff --git a/modules/mappers/mod_rewrite.c b/modules/mappers/mod_rewrite.c index 8f5d3972ed..2e285bbeb8 100644 --- a/modules/mappers/mod_rewrite.c +++ b/modules/mappers/mod_rewrite.c @@ -3909,6 +3909,7 @@ static int apply_rewrite_rule(rewriterule_entry *p, rewrite_ctx *ctx) char *newuri = NULL; request_rec *r = ctx->r; int is_proxyreq = 0; + int force_no_sub = 0; ctx->uri = r->filename; @@ -4022,6 +4023,11 @@ static int apply_rewrite_rule(rewriterule_entry *p, rewrite_ctx *ctx) newuri = do_expand(p->output, ctx, p); rewritelog((r, 2, ctx->perdir, "rewrite '%s' -> '%s'", ctx->uri, newuri)); + /* Allow a substitution to resolve to "-" and act like a literal "-" */ + if (newuri && *newuri == '-' && !newuri[1]) { + newuri = NULL; + force_no_sub = 1; + } } /* expand [E=var:val] and [CO=] */ @@ -4029,7 +4035,7 @@ static int apply_rewrite_rule(rewriterule_entry *p, rewrite_ctx *ctx) do_expand_cookie(p->cookie, ctx); /* non-substitution rules ('RewriteRule -') end here. */ - if (p->flags & RULEFLAG_NOSUB) { + if (p->flags & RULEFLAG_NOSUB || force_no_sub) { force_type_handler(p, ctx); if (p->flags & RULEFLAG_STATUS) { -- 2.40.0