From: Nick Kew Date: Mon, 4 May 2015 22:05:14 +0000 (+0000) Subject: Make REDIRECT_URL a complete URL (where set). X-Git-Tag: 2.5.0-alpha~3175 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5a649184dc46d7aea330d91d42420c1f79ebdbed;p=apache Make REDIRECT_URL a complete URL (where set). PR 57785 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1677702 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index d3c80fb718..351deff555 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,8 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.0 + *) core/util_script: make REDIRECT_URL a full URL. PR 57785. [Nick Kew] + *) mod_ssl: Check for the Entropy Gathering Daemon (EGD) availability at configure time (RAND_egd), and complain if SSLRandomSeed requires using it otherwise. [Bernard Spil , Stefan Sperling, diff --git a/server/util_script.c b/server/util_script.c index a8d9ebc4f0..14991cd0ff 100644 --- a/server/util_script.c +++ b/server/util_script.c @@ -282,12 +282,25 @@ AP_DECLARE(void) ap_add_common_vars(request_rec *r) /* Apache custom error responses. If we have redirected set two new vars */ if (r->prev) { + /* PR#57785: reconstruct full URL here */ + apr_uri_t *uri = &r->prev->parsed_uri; + if (!uri->scheme) { + uri->scheme = (char*)ap_http_scheme(r->prev); + } + if (!uri->port) { + uri->port = ap_get_server_port(r->prev); + uri->port_str = apr_psprintf(r->pool, "%u", uri->port); + } + if (!uri->hostname) { + uri->hostname = (char*)ap_get_server_name_for_url(r->prev); + } add_unless_null(e, "REDIRECT_QUERY_STRING", r->prev->args); - add_unless_null(e, "REDIRECT_URL", r->prev->uri); + add_unless_null(e, "REDIRECT_URL", + apr_uri_unparse(r->pool, uri, 0)); } if (e != r->subprocess_env) { - apr_table_overlap(r->subprocess_env, e, APR_OVERLAP_TABLES_SET); + apr_table_overlap(r->subprocess_env, e, APR_OVERLAP_TABLES_SET); } }