diff options
author | Yann Ylavic <ylavic@apache.org> | 2021-12-13 19:55:18 +0100 |
---|---|---|
committer | Yann Ylavic <ylavic@apache.org> | 2021-12-13 19:55:18 +0100 |
commit | 3ec0ffb9e1ac05622b97a7afd6992dd2bd41ce38 (patch) | |
tree | 507e70b7677f204290b5a8c176159ede06ba7a63 /modules/proxy/mod_proxy.c | |
parent | mod_proxy: Detect unix: scheme syntax errors at load time. (diff) | |
download | apache2-3ec0ffb9e1ac05622b97a7afd6992dd2bd41ce38.tar.xz apache2-3ec0ffb9e1ac05622b97a7afd6992dd2bd41ce38.zip |
http: Enforce that fully qualified uri-paths not to be forward-proxied
have an http(s) scheme, and that the ones to be forward proxied have a
hostname, per HTTP specifications.
The early checks avoid failing the request later on and thus save cycles
for those invalid cases.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1895921 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/proxy/mod_proxy.c')
-rw-r--r-- | modules/proxy/mod_proxy.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c index 622b936dde..b0dc09ecdf 100644 --- a/modules/proxy/mod_proxy.c +++ b/modules/proxy/mod_proxy.c @@ -781,13 +781,13 @@ static int proxy_detect(request_rec *r) /* Ick... msvc (perhaps others) promotes ternary short results to int */ - if (conf->req && r->parsed_uri.scheme) { + if (conf->req && r->parsed_uri.scheme && r->parsed_uri.hostname) { /* but it might be something vhosted */ - if (!(r->parsed_uri.hostname - && !ap_cstr_casecmp(r->parsed_uri.scheme, ap_http_scheme(r)) - && ap_matches_request_vhost(r, r->parsed_uri.hostname, - (apr_port_t)(r->parsed_uri.port_str ? r->parsed_uri.port - : ap_default_port(r))))) { + if (ap_cstr_casecmp(r->parsed_uri.scheme, ap_http_scheme(r)) != 0 + || !ap_matches_request_vhost(r, r->parsed_uri.hostname, + (apr_port_t)(r->parsed_uri.port_str + ? r->parsed_uri.port + : ap_default_port(r)))) { r->proxyreq = PROXYREQ_PROXY; r->uri = r->unparsed_uri; r->filename = apr_pstrcat(r->pool, "proxy:", r->uri, NULL); |