From c0b81a84a288e80cc0d56da6b97781de6112aeb0 Mon Sep 17 00:00:00 2001 From: Graham Leggett Date: Mon, 13 Jun 2016 22:53:08 +0000 Subject: [PATCH] mod_proxy_fcgi: Avoid passing a filename of proxy:fcgi:// as SCRIPT_FILENAME to a FastCGI server. PR59618. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1748324 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 4 ++++ modules/proxy/mod_proxy_fcgi.c | 20 +++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/CHANGES b/CHANGES index e22a0eb26d..9f99c832e3 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,10 @@ Changes with Apache 2.4.21 + *) mod_proxy_fcgi: Avoid passing a filename of proxy:fcgi:// as + SCRIPT_FILENAME to a FastCGI server. PR59618. + [Jacob Champion ] + *) mod_dav: Add dav_get_provider_name() function to obtain the name of the provider from mod_dav. [Jari Urpalainen ] diff --git a/modules/proxy/mod_proxy_fcgi.c b/modules/proxy/mod_proxy_fcgi.c index 43c243e414..19047ff6e5 100644 --- a/modules/proxy/mod_proxy_fcgi.c +++ b/modules/proxy/mod_proxy_fcgi.c @@ -262,11 +262,21 @@ static apr_status_t send_environment(proxy_conn_rec *conn, request_rec *r, } } - /* Strip balancer prefix */ - if (r->filename && !strncmp(r->filename, "proxy:balancer://", 17)) { - char *newfname = apr_pstrdup(r->pool, r->filename+17); - newfname = ap_strchr(newfname, '/'); - r->filename = newfname; + /* Strip proxy: prefixes */ + if (r->filename) { + char *newfname = NULL; + + if (!strncmp(r->filename, "proxy:balancer://", 17)) { + newfname = apr_pstrdup(r->pool, r->filename+17); + } + else if (!strncmp(r->filename, "proxy:fcgi://", 13)) { + newfname = apr_pstrdup(r->pool, r->filename+13); + } + + if (newfname) { + newfname = ap_strchr(newfname, '/'); + r->filename = newfname; + } } ap_add_common_vars(r); -- 2.40.0