From eea0259d74ab112b9364d143908641cb6249150b Mon Sep 17 00:00:00 2001 From: Joe Orton Date: Thu, 8 Feb 2024 17:19:27 +0000 Subject: [PATCH] mod_dav: add DavBasePath Resolves: RHEL-6600 --- .httpd.metadata | 3 ++ httpd-2.4.57-r1912081.patch | 91 +++++++++++++++++++++++++++++++++++++ httpd.spec | 5 ++ 3 files changed, 99 insertions(+) create mode 100644 .httpd.metadata create mode 100644 httpd-2.4.57-r1912081.patch diff --git a/.httpd.metadata b/.httpd.metadata new file mode 100644 index 0000000..77f9cbd --- /dev/null +++ b/.httpd.metadata @@ -0,0 +1,3 @@ +01044512374941fad939ec4b1537428cc7edc769 httpd-2.4.57.tar.bz2 +5cac6152cf2f175cc35ca0cf9d00b797c949b273 httpd-2.4.57.tar.bz2.asc +b2457e3ce46a7634bf9272a92b4214974b9bc9e0 KEYS diff --git a/httpd-2.4.57-r1912081.patch b/httpd-2.4.57-r1912081.patch new file mode 100644 index 0000000..111e5ac --- /dev/null +++ b/httpd-2.4.57-r1912081.patch @@ -0,0 +1,91 @@ +# ./pullrev.sh 1912081 +http://svn.apache.org/viewvc?view=revision&revision=1912081 + +Upstream-Status: merged in 2.4.58 + +--- httpd-2.4.57/modules/dav/main/mod_dav.c ++++ httpd-2.4.57/modules/dav/main/mod_dav.c +@@ -81,6 +81,7 @@ + const char *provider_name; + const dav_provider *provider; + const char *dir; ++ const char *base; + int locktimeout; + int allow_depthinfinity; + int allow_lockdiscovery; +@@ -196,6 +197,7 @@ + + newconf->locktimeout = DAV_INHERIT_VALUE(parent, child, locktimeout); + newconf->dir = DAV_INHERIT_VALUE(parent, child, dir); ++ newconf->base = DAV_INHERIT_VALUE(parent, child, base); + newconf->allow_depthinfinity = DAV_INHERIT_VALUE(parent, child, + allow_depthinfinity); + newconf->allow_lockdiscovery = DAV_INHERIT_VALUE(parent, child, +@@ -283,6 +285,18 @@ + } + + /* ++ * Command handler for the DAVBasePath directive, which is TAKE1 ++ */ ++static const char *dav_cmd_davbasepath(cmd_parms *cmd, void *config, const char *arg1) ++{ ++ dav_dir_conf *conf = config; ++ ++ conf->base = arg1; ++ ++ return NULL; ++} ++ ++/* + * Command handler for the DAVDepthInfinity directive, which is FLAG. + */ + static const char *dav_cmd_davdepthinfinity(cmd_parms *cmd, void *config, +@@ -748,7 +762,7 @@ + int use_checked_in, dav_resource **res_p) + { + dav_dir_conf *conf; +- const char *label = NULL; ++ const char *label = NULL, *base; + dav_error *err; + + /* if the request target can be overridden, get any target selector */ +@@ -765,11 +779,27 @@ + ap_escape_html(r->pool, r->uri))); + } + ++ /* Take the repos root from DAVBasePath if configured, else the ++ * path of the enclosing section. */ ++ base = conf->base ? conf->base : conf->dir; ++ + /* resolve the resource */ +- err = (*conf->provider->repos->get_resource)(r, conf->dir, ++ err = (*conf->provider->repos->get_resource)(r, base, + label, use_checked_in, + res_p); + if (err != NULL) { ++ /* In the error path, give a hint that DavBasePath needs to be ++ * used if the location was configured via a regex match. */ ++ if (!conf->base) { ++ core_dir_config *cdc = ap_get_core_module_config(r->per_dir_config); ++ ++ if (cdc->r) { ++ ap_log_error(APLOG_MARK, APLOG_ERR, 0, NULL, APLOGNO(10484) ++ "failed to find repository for location configured " ++ "via regex match - missing DAVBasePath?"); ++ } ++ } ++ + err = dav_push_error(r->pool, err->status, 0, + "Could not fetch resource information.", err); + return err; +@@ -5164,6 +5194,10 @@ + AP_INIT_TAKE1("DAV", dav_cmd_dav, NULL, ACCESS_CONF, + "specify the DAV provider for a directory or location"), + ++ /* per directory/location */ ++ AP_INIT_TAKE1("DAVBasePath", dav_cmd_davbasepath, NULL, ACCESS_CONF, ++ "specify the DAV repository base URL"), ++ + /* per directory/location, or per server */ + AP_INIT_TAKE1("DAVMinTimeout", dav_cmd_davmintimeout, NULL, + ACCESS_CONF|RSRC_CONF, diff --git a/httpd.spec b/httpd.spec index 27fa27e..48dc06c 100644 --- a/httpd.spec +++ b/httpd.spec @@ -96,6 +96,8 @@ Patch50: httpd-2.4.57-r1825120.patch Patch52: httpd-2.4.53-separate-systemd-fns.patch # https://issues.redhat.com/browse/RHEL-5071 Patch53: httpd-2.4.57-r1912477+.patch +# https://issues.redhat.com/browse/RHEL-6600 +Patch54: httpd-2.4.57-r1912081.patch # Bug fixes @@ -285,6 +287,7 @@ written in the Lua programming language. %patch50 -p1 -b .r1825120 %patch52 -p1 -b .separatesystemd %patch53 -p1 -b .r1912477+ +%patch54 -p1 -b .r1912081 %patch60 -p1 -b .enable-sslv3 %patch61 -p1 -b .htcacheclean-dont-break @@ -862,6 +865,8 @@ exit $rv * Wed Feb 7 2024 Joe Orton - 2.4.57-8 - mod_xml2enc: fix media type handling Resolves: RHEL-17686 +- mod_dav: add DavBasePath + Resolves: RHEL-6600 * Mon Feb 05 2024 Luboš Uhliarik - 2.4.57-7 - Resolves: RHEL-14447 - httpd: mod_macro: out-of-bounds read