From 78b3c8cccea90a4871725f6b750e86bd34d00f4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20Uhliarik?= Date: Fri, 19 Aug 2022 03:15:50 +0200 Subject: [PATCH] Resolves: #2119280 - Core dumped upon file upload >= 1GB --- mod_wsgi-4.9.1-request-limit.patch | 46 ++++++++++++++++++++++++++++++ mod_wsgi.spec | 6 +++- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 mod_wsgi-4.9.1-request-limit.patch diff --git a/mod_wsgi-4.9.1-request-limit.patch b/mod_wsgi-4.9.1-request-limit.patch new file mode 100644 index 0000000..f8f29e3 --- /dev/null +++ b/mod_wsgi-4.9.1-request-limit.patch @@ -0,0 +1,46 @@ +diff --git a/src/server/mod_wsgi.c b/src/server/mod_wsgi.c +index 59aad90..ef5f5af 100644 +--- a/src/server/mod_wsgi.c ++++ b/src/server/mod_wsgi.c +@@ -12586,6 +12586,9 @@ static apr_status_t wsgi_header_filter(ap_filter_t *f, apr_bucket_brigade *b) + + /* Output status line. */ + ++ if (!r->status_line) ++ r->status_line = ap_get_status_line(r->status); ++ + vec1[0].iov_base = (void *)"Status:"; + vec1[0].iov_len = strlen("Status:"); + vec1[1].iov_base = (void *)" "; +@@ -12699,6 +12702,7 @@ static int wsgi_hook_daemon_handler(conn_rec *c) + apr_bucket_brigade *bb; + + core_request_config *req_cfg; ++ core_dir_config *d; + + ap_filter_t *current = NULL; + ap_filter_t *next = NULL; +@@ -12890,6 +12894,23 @@ static int wsgi_hook_daemon_handler(conn_rec *c) + + r->per_dir_config = r->server->lookup_defaults; + ++ /* ++ * Try and ensure that request body limit in daemon mode process ++ * is unlimited as Apache 2.4.54 changed rules for limit and if ++ * unset is now overridden by HTTP filters to be 1GiB rather than ++ * unlimited. This is required since we populate configuration ++ * from the base server config only so setting unlimited in a more ++ * specific context such as a virtual host wouldn't be visible. ++ * Note that setting this to unlimited in the daemon mode process ++ * is okay as the request limit body is checked in the Apache ++ * child process before request is proxied specifically to avoid ++ * unecessarily passing the content across to the daemon process. ++ */ ++ ++ d = (core_dir_config *)ap_get_core_module_config(r->per_dir_config); ++ ++ d->limit_req_body = 0; ++ + r->sent_bodyct = 0; + + r->read_length = 0; diff --git a/mod_wsgi.spec b/mod_wsgi.spec index 95a5ac2..e99703f 100644 --- a/mod_wsgi.spec +++ b/mod_wsgi.spec @@ -16,7 +16,7 @@ Name: mod_wsgi Version: 4.9.1 -Release: 3%{?dist} +Release: 4%{?dist} Summary: A WSGI interface for Python web applications in Apache License: ASL 2.0 URL: https://modwsgi.readthedocs.io/ @@ -24,6 +24,7 @@ Source0: https://github.com/GrahamDumpleton/mod_wsgi/archive/%{version}.t Source1: wsgi.conf Source2: wsgi-python3.conf Patch1: mod_wsgi-4.5.20-exports.patch +Patch2: mod_wsgi-4.9.1-request-limit.patch BuildRequires: httpd-devel BuildRequires: gcc @@ -160,6 +161,9 @@ ln -s %{_bindir}/mod_wsgi-express-2 $RPM_BUILD_ROOT%{_bindir}/mod_wsgi-express %endif %changelog +* Fri Aug 19 2022 Luboš Uhliarik - 4.9.1-4 +- Resolves: #2119280 - Core dumped upon file upload >= 1GB + * Thu Jul 21 2022 Fedora Release Engineering - 4.9.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild