diff --git a/SOURCES/httpd-2.4.37-r1855391.patch b/SOURCES/httpd-2.4.37-r1855391.patch new file mode 100644 index 0000000..8cab1b3 --- /dev/null +++ b/SOURCES/httpd-2.4.37-r1855391.patch @@ -0,0 +1,48 @@ +diff --git a/modules/http/http_filters.c b/modules/http/http_filters.c +index 27c44b2..bfa8952 100644 +--- a/modules/http/http_filters.c ++++ b/modules/http/http_filters.c +@@ -1290,6 +1290,7 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, + request_rec *r = f->r; + conn_rec *c = r->connection; + const char *clheader; ++ int header_only = (r->header_only || AP_STATUS_IS_HEADER_ONLY(r->status)); + const char *protocol = NULL; + apr_bucket *e; + apr_bucket_brigade *b2; +@@ -1307,7 +1308,7 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, + } + else if (ctx->headers_sent) { + /* Eat body if response must not have one. */ +- if (r->header_only || AP_STATUS_IS_HEADER_ONLY(r->status)) { ++ if (header_only) { + /* Still next filters may be waiting for EOS, so pass it (alone) + * when encountered and be done with this filter. + */ +@@ -1526,14 +1527,21 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, + + terminate_header(b2); + +- rv = ap_pass_brigade(f->next, b2); +- if (rv != APR_SUCCESS) { +- goto out; ++ if (header_only) { ++ e = APR_BRIGADE_LAST(b); ++ if (e != APR_BRIGADE_SENTINEL(b) && APR_BUCKET_IS_EOS(e)) { ++ APR_BUCKET_REMOVE(e); ++ APR_BRIGADE_INSERT_TAIL(b2, e); ++ ap_remove_output_filter(f); ++ } ++ apr_brigade_cleanup(b); + } ++ ++ rv = ap_pass_brigade(f->next, b2); ++ apr_brigade_cleanup(b2); + ctx->headers_sent = 1; + +- if (r->header_only || AP_STATUS_IS_HEADER_ONLY(r->status)) { +- apr_brigade_cleanup(b); ++ if (rv != APR_SUCCESS || header_only) { + goto out; + } + diff --git a/SPECS/httpd.spec b/SPECS/httpd.spec index 96816e1..30714f9 100644 --- a/SPECS/httpd.spec +++ b/SPECS/httpd.spec @@ -13,7 +13,7 @@ Summary: Apache HTTP Server Name: httpd Version: 2.4.37 -Release: 65%{?dist}.3 +Release: 65%{?dist}.4 URL: https://httpd.apache.org/ Source0: https://www.apache.org/dist/httpd/httpd-%{version}.tar.bz2 Source2: httpd.logrotate @@ -175,6 +175,8 @@ Patch94: httpd-2.4.57-r1884505+.patch Patch95: httpd-2.4.37-r1919325.patch # https://issues.redhat.com/browse/RHEL-56068 Patch96: httpd-2.4.37-r1922080.patch +# https://issues.redhat.com/browse/RHEL-87641 +Patch97: httpd-2.4.37-r1855391.patch # Security fixes Patch200: httpd-2.4.37-r1851471.patch @@ -463,6 +465,7 @@ interface for storing and accessing per-user session data. %patch92 -p1 -b .mod_status-dupl %patch93 -p1 -b .r1885607 %patch94 -p1 -b .r1884505+ +%patch97 -p1 -b .r1855391 %patch200 -p1 -b .r1851471 %patch201 -p1 -b .CVE-2019-0211 @@ -1022,6 +1025,9 @@ rm -rf $RPM_BUILD_ROOT %{_rpmconfigdir}/macros.d/macros.httpd %changelog +* Tue Apr 22 2025 Luboš Uhliarik - 2.4.37-65.4 +- Resolves: RHEL-87641 - apache Bug 63192 - mod_ratelimit breaks HEAD requests + * Wed Jan 29 2025 Luboš Uhliarik - 2.4.37-65.3 - Resolves: RHEL-56068 - Apache HTTPD no longer parse PHP files with unicode characters in the name