[arch-commits] Commit in apache/trunk (PKGBUILD revert_redirect_url.patch)

Anatol Pomozov anatolik at archlinux.org
Wed Nov 11 16:37:45 UTC 2015


    Date: Wednesday, November 11, 2015 @ 17:37:45
  Author: anatolik
Revision: 250752

upgpkg: apache 2.4.17-3

Backport fix for https://bz.apache.org/bugzilla/show_bug.cgi?id=57785

Added:
  apache/trunk/revert_redirect_url.patch
Modified:
  apache/trunk/PKGBUILD

---------------------------+
 PKGBUILD                  |   12 ++-
 revert_redirect_url.patch |  150 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 159 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2015-11-11 15:35:33 UTC (rev 250751)
+++ PKGBUILD	2015-11-11 16:37:45 UTC (rev 250752)
@@ -5,7 +5,7 @@
 
 pkgname=apache
 pkgver=2.4.17
-pkgrel=2
+pkgrel=3
 pkgdesc='A high performance Unix-based HTTP server'
 arch=('i686' 'x86_64')
 url='http://www.apache.org/dist/httpd'
@@ -35,13 +35,17 @@
     httpd.logrotate
     httpd.service
     arch.layout
+    # bugfix for https://bz.apache.org/bugzilla/show_bug.cgi?id=57785
+    # taken from https://github.com/apache/httpd/commit/7feb3c0999927f9d0d16f37c7bed13b58c09162f
+    revert_redirect_url.patch
 )
 sha256sums=('331e035dec81d3db95b048f036f4d7b1a97ec8daa5b377bde42d4ccf1f2eb798'
             'SKIP'
             '63da1a420f4714a3e7af2672d28384419cc7eedbe7bf35baebd02938fabc15bf'
             '875903831634edf35d8d57e9a51bacb818255ecb3bfff29627f03e43d1ab65c3'
-            '14d0a775eea7f8c66ba55399a9ad1e4fd29e0302f479a15b28bbfc754c5aa347'
-            'dda05c6e76f12624e418ca18a36f2e90ec1c5b1cc52fed7142fce6076ec413f3')
+            '2c6fc6fabc7fb113650690ce4e9347e54c4d2124b2975c7d671720169c990398'
+            'dda05c6e76f12624e418ca18a36f2e90ec1c5b1cc52fed7142fce6076ec413f3'
+            'eb9033e039e24cd443c861af0853dd8a8f7369170a393ef25fd31a627f6d40db')
 validpgpkeys=('A93D62ECC3C8EA12DB220EC934EA76E6791485A8') # Jim Jagielski
 
 prepare() {
@@ -53,6 +57,8 @@
       -i docs/conf/httpd.conf.in
 
   cat "${srcdir}/arch.layout" >> config.layout
+
+  patch -p1 < ../revert_redirect_url.patch
 }
 
 build() {

Added: revert_redirect_url.patch
===================================================================
--- revert_redirect_url.patch	                        (rev 0)
+++ revert_redirect_url.patch	2015-11-11 16:37:45 UTC (rev 250752)
@@ -0,0 +1,150 @@
+From 7feb3c0999927f9d0d16f37c7bed13b58c09162f Mon Sep 17 00:00:00 2001
+From: Jim Jagielski <jim at apache.org>
+Date: Tue, 3 Nov 2015 12:02:43 +0000
+Subject: [PATCH] Merge r1710380, r1710391 from trunk:
+
+Make the fix for fully qualifying REDIRECT_URL from PR#57785 opt-in.
+
+
+
+
+followup to r1710380 -- refactored name and didn't have 'make depend'
+
+
+Submitted by: covener
+Reviewed/backported by: jim
+
+
+git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1712268 13f79535-47bb-0310-9956-ffa450edef68
+---
+ CHANGES                  |  3 +++
+ STATUS                   |  7 -------
+ docs/manual/mod/core.xml | 27 +++++++++++++++++++++++++++
+ include/http_core.h      | 13 +++++++++++++
+ server/core.c            | 16 ++++++++++++++++
+ server/util_script.c     | 31 ++++++++++++++++++-------------
+ 6 files changed, 77 insertions(+), 20 deletions(-)
+
+diff --git a/include/http_core.h b/include/http_core.h
+index 6ca53f7..8535455 100644
+--- a/include/http_core.h
++++ b/include/http_core.h
+@@ -465,6 +465,17 @@ typedef unsigned long etag_components_t;
+ /* This is the default value used */
+ #define ETAG_BACKWARD (ETAG_MTIME | ETAG_SIZE)
+ 
++/* Generic ON/OFF/UNSET for unsigned int foo :2 */
++#define AP_CORE_CONFIG_OFF   (0)
++#define AP_CORE_CONFIG_ON    (1)
++#define AP_CORE_CONFIG_UNSET (2)
++
++/* Generic merge of flag */
++#define AP_CORE_MERGE_FLAG(field, to, base, over) to->field = \
++               over->field != AP_CORE_CONFIG_UNSET            \
++               ? over->field                                  \
++               : base->field                                   
++
+ /**
+  * @brief Server Signature Enumeration
+  */
+@@ -630,6 +641,8 @@ typedef struct {
+      * advice
+      */
+     unsigned int cgi_pass_auth : 2;
++    unsigned int qualify_redirect_url :2;
++
+ } core_dir_config;
+ 
+ /* macro to implement off by default behaviour */
+diff --git a/server/core.c b/server/core.c
+index 37484b6..803d4d4 100644
+--- a/server/core.c
++++ b/server/core.c
+@@ -191,6 +191,7 @@ static void *create_core_dir_config(apr_pool_t *a, char *dir)
+     conf->max_reversals = AP_MAXRANGES_UNSET;
+ 
+     conf->cgi_pass_auth = AP_CGI_PASS_AUTH_UNSET;
++    conf->qualify_redirect_url = AP_CORE_CONFIG_UNSET; 
+ 
+     return (void *)conf;
+ }
+@@ -405,6 +406,8 @@ static void *merge_core_dir_configs(apr_pool_t *a, void *basev, void *newv)
+ 
+     conf->cgi_pass_auth = new->cgi_pass_auth != AP_CGI_PASS_AUTH_UNSET ? new->cgi_pass_auth : base->cgi_pass_auth;
+ 
++    AP_CORE_MERGE_FLAG(qualify_redirect_url, conf, base, new);
++
+     return (void*)conf;
+ }
+ 
+@@ -1707,6 +1710,15 @@ static const char *set_cgi_pass_auth(cmd_parms *cmd, void *d_, int flag)
+     return NULL;
+ }
+ 
++static const char *set_qualify_redirect_url(cmd_parms *cmd, void *d_, int flag)
++{
++    core_dir_config *d = d_;
++
++    d->qualify_redirect_url = flag ? AP_CORE_CONFIG_ON : AP_CORE_CONFIG_OFF;
++
++    return NULL;
++}
++
+ static const char *set_override_list(cmd_parms *cmd, void *d_, int argc, char *const argv[])
+ {
+     core_dir_config *d = d_;
+@@ -4206,6 +4218,10 @@ AP_INIT_TAKE12("LimitInternalRecursion", set_recursion_limit, NULL, RSRC_CONF,
+ AP_INIT_FLAG("CGIPassAuth", set_cgi_pass_auth, NULL, OR_AUTHCFG,
+              "Controls whether HTTP authorization headers, normally hidden, will "
+              "be passed to scripts"),
++AP_INIT_FLAG("QualifyRedirectURL", set_qualify_redirect_url, NULL, OR_FILEINFO,
++             "Controls whether HTTP authorization headers, normally hidden, will "
++             "be passed to scripts"),
++
+ AP_INIT_TAKE1("ForceType", ap_set_string_slot_lower,
+        (void *)APR_OFFSETOF(core_dir_config, mime_type), OR_FILEINFO,
+      "a mime type that overrides other configured type"),
+diff --git a/server/util_script.c b/server/util_script.c
+index 14991cd..7ac7930 100644
+--- a/server/util_script.c
++++ b/server/util_script.c
+@@ -282,21 +282,26 @@ 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);
++        if (conf->qualify_redirect_url != AP_CORE_CONFIG_ON) { 
++            add_unless_null(e, "REDIRECT_URL", r->prev->uri);
++        }
++        else { 
++            /* 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_URL",
++                            apr_uri_unparse(r->pool, uri, 0));
+         }
+         add_unless_null(e, "REDIRECT_QUERY_STRING", r->prev->args);
+-        add_unless_null(e, "REDIRECT_URL",
+-                        apr_uri_unparse(r->pool, uri, 0));
+     }
+ 
+     if (e != r->subprocess_env) {



More information about the arch-commits mailing list