]> git.pld-linux.org Git - packages/nginx.git/commitdiff
Rel 5; fix memory leak on reconfigure auto/th/nginx-1.24.0-5
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Fri, 15 Dec 2023 21:43:36 +0000 (22:43 +0100)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Fri, 15 Dec 2023 21:43:36 +0000 (22:43 +0100)
nginx.spec
pcre2-mem-leak.patch [new file with mode: 0644]

index 4446b6c19288df1dbb03d1c69cdf2b54d518449c..b341d82432e54386ba6aa40cc19b1dbf5e465f26 100644 (file)
@@ -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 (file)
index 0000000..b2b11c9
--- /dev/null
@@ -0,0 +1,54 @@
+From 284a0c73771e3a2c57af6e74d96d9a6878b2e7b4 Mon Sep 17 00:00:00 2001
+From: Maxim Dounin <mdounin@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;
+ }
This page took 0.07621 seconds and 4 git commands to generate.