[packages/nginx] Rel 5; fix memory leak on reconfigure
arekm
arekm at pld-linux.org
Fri Dec 15 22:48:06 CET 2023
commit 6dafd76e1ad197fceef1f12bc86922e997a59625
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Fri Dec 15 22:43:36 2023 +0100
Rel 5; fix memory leak on reconfigure
nginx.spec | 4 +++-
pcre2-mem-leak.patch | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 57 insertions(+), 1 deletion(-)
---
diff --git a/nginx.spec b/nginx.spec
index 4446b6c..b341d82 100644
--- a/nginx.spec
+++ b/nginx.spec
@@ -51,7 +51,7 @@ Summary(pl.UTF-8): Serwer HTTP i odwrotne proxy o wysokiej wydajności
# http://nginx.org/en/download.html
Name: nginx
Version: 1.24.0
-Release: 4
+Release: 5
License: BSD-like
Group: Networking/Daemons/HTTP
Source0: https://nginx.org/download/%{name}-%{version}.tar.gz
@@ -78,6 +78,7 @@ Source103: https://github.com/openresty/headers-more-nginx-module/archive/v%{hea
Source104: https://github.com/nginx-modules/ngx_cache_purge/archive/refs/tags/%{http_cache_purge_version}.tar.gz
# Source104-md5: bf92baae08e4c850825a8543c7d4aaa8
Patch0: %{name}-no-Werror.patch
+Patch1: pcre2-mem-leak.patch
URL: https://nginx.org/
BuildRequires: mailcap
BuildRequires: pcre2-8-devel
@@ -306,6 +307,7 @@ Plik monitrc do monitorowania serwera WWW nginx.
%prep
%setup -q %{?with_rtmp:-a101} %{?with_modsecurity:-a33} %{?with_vts:-a102} %{?with_headers_more:-a103} -a104
%patch0 -p0
+%patch1 -p1
%if %{with rtmp}
mv nginx-rtmp-module-%{rtmp_version} nginx-rtmp-module
diff --git a/pcre2-mem-leak.patch b/pcre2-mem-leak.patch
new file mode 100644
index 0000000..b2b11c9
--- /dev/null
+++ b/pcre2-mem-leak.patch
@@ -0,0 +1,54 @@
+From 284a0c73771e3a2c57af6e74d96d9a6878b2e7b4 Mon Sep 17 00:00:00 2001
+From: Maxim Dounin <mdounin at mdounin.ru>
+Date: Tue, 17 Oct 2023 02:39:38 +0300
+Subject: [PATCH] Core: fixed memory leak on configuration reload with PCRE2.
+
+In ngx_regex_cleanup() allocator wasn't configured when calling
+pcre2_compile_context_free() and pcre2_match_data_free(), resulting
+in no ngx_free() call and leaked memory. Fix is ensure that allocator
+is configured for global allocations, so that ngx_free() is actually
+called to free memory.
+
+Additionally, ngx_regex_compile_context was cleared in
+ngx_regex_module_init(). It should be either not cleared, so it will
+be freed by ngx_regex_cleanup(), or properly freed. Fix is to
+not clear it, so ngx_regex_cleanup() will be able to free it.
+
+Reported by ZhenZhong Wu,
+https://mailman.nginx.org/pipermail/nginx-devel/2023-September/3Z5FIKUDRN2WBSL3JWTZJ7SXDA6YIWPB.html
+---
+ src/core/ngx_regex.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/ngx_regex.c b/src/core/ngx_regex.c
+index 91381f4994..5b13c5db38 100644
+--- a/src/core/ngx_regex.c
++++ b/src/core/ngx_regex.c
+@@ -600,6 +600,8 @@ ngx_regex_cleanup(void *data)
+ * the new cycle, these will be re-allocated.
+ */
+
++ ngx_regex_malloc_init(NULL);
++
+ if (ngx_regex_compile_context) {
+ pcre2_compile_context_free(ngx_regex_compile_context);
+ ngx_regex_compile_context = NULL;
+@@ -611,6 +613,8 @@ ngx_regex_cleanup(void *data)
+ ngx_regex_match_data_size = 0;
+ }
+
++ ngx_regex_malloc_done();
++
+ #endif
+ }
+
+@@ -706,9 +710,6 @@ ngx_regex_module_init(ngx_cycle_t *cycle)
+ ngx_regex_malloc_done();
+
+ ngx_regex_studies = NULL;
+-#if (NGX_PCRE2)
+- ngx_regex_compile_context = NULL;
+-#endif
+
+ return NGX_OK;
+ }
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/nginx.git/commitdiff/6dafd76e1ad197fceef1f12bc86922e997a59625
More information about the pld-cvs-commit
mailing list