1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-07 04:02:58 +03:00

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 <pmh1wheel gmail.com>]

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1837250 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Christophe Jaillet
2018-08-01 18:53:53 +00:00
parent c7c68752c8
commit 43fe7164f6
2 changed files with 10 additions and 2 deletions

View File

@@ -1,6 +1,10 @@
-*- coding: utf-8 -*- -*- coding: utf-8 -*-
Changes with Apache 2.5.1 Changes with Apache 2.5.1
*) mod_proxy: 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 <pmh1wheel gmail.com>]
*) mod_ratelimit: Don't interfere with "chunked" encoding, fixing regression *) mod_ratelimit: Don't interfere with "chunked" encoding, fixing regression
introduced in 2.4.34. PR 62568. [Yann Ylavic] introduced in 2.4.34. PR 62568. [Yann Ylavic]

View File

@@ -830,7 +830,7 @@ PROXY_DECLARE(const char *) ap_proxy_location_reverse_map(request_rec *r,
{ {
proxy_req_conf *rconf; proxy_req_conf *rconf;
struct proxy_alias *ent; struct proxy_alias *ent;
int i, l1, l2; int i, l1, l1_orig, l2;
char *u; char *u;
/* /*
@@ -842,7 +842,7 @@ PROXY_DECLARE(const char *) ap_proxy_location_reverse_map(request_rec *r,
return url; return url;
} }
l1 = strlen(url); l1_orig = strlen(url);
if (conf->interpolate_env == 1) { if (conf->interpolate_env == 1) {
rconf = ap_get_module_config(r->request_config, &proxy_module); rconf = ap_get_module_config(r->request_config, &proxy_module);
ent = (struct proxy_alias *)rconf->raliases->elts; ent = (struct proxy_alias *)rconf->raliases->elts;
@@ -855,6 +855,10 @@ PROXY_DECLARE(const char *) ap_proxy_location_reverse_map(request_rec *r,
ap_get_module_config(r->server->module_config, &proxy_module); ap_get_module_config(r->server->module_config, &proxy_module);
proxy_balancer *balancer; proxy_balancer *balancer;
const char *real = ent[i].real; 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 * First check if mapping against a balancer and see
* if we have such a entity. If so, then we need to * if we have such a entity. If so, then we need to