From 657d20fe0dbe55a793ca48fb6f58ee497d241934 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Wed, 7 Nov 2018 15:18:42 +0000 Subject: [PATCH 261/504] Merge r1837250 from trunk: If ProxyPassReverse is used for reverse mapping of relative redirects, subsequent ProxyPassReverse statements, whether they are relative or absolute, may fail. PR 60408 [Peter Haworth ] Submitted by: jailletc36 Reviewed by: jailletc36, rpluem, jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1846044 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 4 ++++ STATUS | 6 ------ modules/proxy/proxy_util.c | 8 ++++++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/modules/proxy/proxy_util.c b/modules/proxy/proxy_util.c index 6501c68064..cbf8826777 100644 --- a/modules/proxy/proxy_util.c +++ b/modules/proxy/proxy_util.c @@ -837,7 +837,7 @@ PROXY_DECLARE(const char *) ap_proxy_location_reverse_map(request_rec *r, { proxy_req_conf *rconf; struct proxy_alias *ent; - int i, l1, l2; + int i, l1, l1_orig, l2; char *u; /* @@ -849,7 +849,7 @@ PROXY_DECLARE(const char *) ap_proxy_location_reverse_map(request_rec *r, return url; } - l1 = strlen(url); + l1_orig = strlen(url); if (conf->interpolate_env == 1) { rconf = ap_get_module_config(r->request_config, &proxy_module); ent = (struct proxy_alias *)rconf->raliases->elts; @@ -862,6 +862,10 @@ PROXY_DECLARE(const char *) ap_proxy_location_reverse_map(request_rec *r, ap_get_module_config(r->server->module_config, &proxy_module); proxy_balancer *balancer; const char *real = ent[i].real; + + /* Restore the url length, if it had been changed by the code below */ + l1 = l1_orig; + /* * First check if mapping against a balancer and see * if we have such a entity. If so, then we need to -- 2.19.1