From 87bb42c589db2c1c2150ffedbcfd93096b383bd8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20Malo?= Date: Sat, 17 May 2003 22:28:23 +0000 Subject: [PATCH] fix LA-U lookaheads in directory context. I'm wondering if this ever worked ... PR: 8493 (related to) git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@99902 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ modules/mappers/mod_rewrite.c | 12 ++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index 7861c53431..8582c1bc86 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache 2.1.0-dev [Remove entries to the current 2.0 section below, when backported] + *) mod_rewrite: Fix LA-U variable look ahead which didn't work correctly + in directory context. Related to PR 8493. [André Malo] + *) Add a delete flag to htpasswd. [Thom May] diff --git a/modules/mappers/mod_rewrite.c b/modules/mappers/mod_rewrite.c index 0c7db0fd62..0e63f55970 100644 --- a/modules/mappers/mod_rewrite.c +++ b/modules/mappers/mod_rewrite.c @@ -3885,10 +3885,10 @@ static char *lookup_variable(request_rec *r, char *var) } } -#define LOOKAHEAD(subrecfunc) \ +#define LOOKAHEAD(subrecfunc, input) \ if ( \ /* filename is safe to use */ \ - r->filename != NULL \ + (input) != NULL \ /* - and we're either not in a subrequest */ \ && ( r->main == NULL \ /* - or in a subrequest where paths are non-NULL... */ \ @@ -3896,7 +3896,7 @@ static char *lookup_variable(request_rec *r, char *var) /* ...and sub and main paths differ */ \ && strcmp(r->main->uri, r->uri) != 0))) { \ /* process a file-based subrequest */ \ - rsub = subrecfunc(r->filename, r, NULL); \ + rsub = subrecfunc((input), r, NULL); \ /* now recursively lookup the variable in the sub_req */ \ result = lookup_variable(rsub, var+5); \ /* copy it up to our scope before we destroy sub_req's apr_pool_t */ \ @@ -3905,18 +3905,18 @@ static char *lookup_variable(request_rec *r, char *var) ap_destroy_sub_req(rsub); \ /* log it */ \ rewritelog(r, 5, "lookahead: path=%s var=%s -> val=%s", \ - r->filename, var+5, result); \ + (input), var+5, result); \ /* return ourself to prevent re-pstrdup */ \ return (char *)result; \ } /* look-ahead for parameter through URI-based sub-request */ else if (strlen(var) > 5 && strncasecmp(var, "LA-U:", 5) == 0) { - LOOKAHEAD(ap_sub_req_lookup_uri) + LOOKAHEAD(ap_sub_req_lookup_uri, r->uri) } /* look-ahead for parameter through file-based sub-request */ else if (strlen(var) > 5 && strncasecmp(var, "LA-F:", 5) == 0) { - LOOKAHEAD(ap_sub_req_lookup_file) + LOOKAHEAD(ap_sub_req_lookup_file, r->filename) } /* file stuff */ -- 2.50.1