[packages/php/PHP_5_3] Add php-fpm-shm-corruption.patch before bug-81026-CVE-2021-21703.patch
glen
glen at pld-linux.org
Wed Dec 1 14:42:21 CET 2021
commit 1797a3f9566209520174e724f97823cbfc760002
Author: Elan Ruusamäe <glen at pld-linux.org>
Date: Fri Oct 29 12:26:02 2021 +0300
Add php-fpm-shm-corruption.patch before bug-81026-CVE-2021-21703.patch
php-fpm-shm-corruption.patch | 86 ++++++++++++++++++++++++++++++++++++++++++++
php.spec | 4 ++-
2 files changed, 89 insertions(+), 1 deletion(-)
---
diff --git a/php.spec b/php.spec
index df1035e..2b841a3 100644
--- a/php.spec
+++ b/php.spec
@@ -252,7 +252,8 @@ Patch75: openssl.patch
Patch76: php-bug-61930.patch
Patch77: php-icu64.patch
Patch78: icu69.patch
-Patch79: bug-81026-CVE-2021-21703.patch
+Patch79: php-fpm-shm-corruption.patch
+Patch80: bug-81026-CVE-2021-21703.patch
# Fixes for security bugs
# https://repo.webtatic.com/yum/centos/5/SRPMS/repoview/php.html
# also from RHEL6/CentOS7
@@ -2166,6 +2167,7 @@ gzip -dc %{SOURCE15} | tar xf - -C sapi/
%patch77 -p1
%patch78 -p1
%patch79 -p1
+%patch80 -p1
%patch220 -p1
%patch221 -p1
diff --git a/php-fpm-shm-corruption.patch b/php-fpm-shm-corruption.patch
new file mode 100644
index 0000000..c1c2ded
--- /dev/null
+++ b/php-fpm-shm-corruption.patch
@@ -0,0 +1,86 @@
+From a22175b06f22965e0d79e2b5bb6c734950adfc5d Mon Sep 17 00:00:00 2001
+From: Julien Pauli <jpauli at php.net>
+Date: Fri, 23 Sep 2016 13:24:31 +0200
+Subject: [PATCH] Formatting. Fix possible memory corruption in FPM SHM
+ management
+
+---
+ sapi/fpm/fpm/fpm_scoreboard.c | 28 ++++++++++++++++------------
+ 1 file changed, 16 insertions(+), 12 deletions(-)
+
+diff --git a/sapi/fpm/fpm/fpm_scoreboard.c b/sapi/fpm/fpm/fpm_scoreboard.c
+index 3e57333e9f..e1e69c9780 100644
+--- a/sapi/fpm/fpm/fpm_scoreboard.c
++++ b/sapi/fpm/fpm/fpm_scoreboard.c
+@@ -25,7 +25,7 @@ static float fpm_scoreboard_tick;
+ int fpm_scoreboard_init_main() /* {{{ */
+ {
+ struct fpm_worker_pool_s *wp;
+- int i;
++ unsigned int i;
+
+ #ifdef HAVE_TIMES
+ #if (defined(HAVE_SYSCONF) && defined(_SC_CLK_TCK))
+@@ -42,6 +42,9 @@ int fpm_scoreboard_init_main() /* {{{ */
+
+
+ for (wp = fpm_worker_all_pools; wp; wp = wp->next) {
++ size_t scoreboard_size, scoreboard_nprocs_size;
++ void *shm_mem;
++
+ if (wp->config->pm_max_children < 1) {
+ zlog(ZLOG_ERROR, "[pool %s] Unable to create scoreboard SHM because max_client is not set", wp->config->name);
+ return -1;
+@@ -52,21 +55,22 @@ int fpm_scoreboard_init_main() /* {{{ */
+ return -1;
+ }
+
+- int scoreboard_size = sizeof(struct fpm_scoreboard_s) + (wp->config->pm_max_children) * sizeof(struct fpm_scoreboard_proc_s *);
+- int scoreboard_nprocs_size = sizeof(struct fpm_scoreboard_proc_s) * wp->config->pm_max_children;
+- void *shm_mem = fpm_shm_alloc(scoreboard_size + scoreboard_nprocs_size);
++ scoreboard_size = sizeof(struct fpm_scoreboard_s) + (wp->config->pm_max_children) * sizeof(struct fpm_scoreboard_proc_s *);
++ scoreboard_nprocs_size = sizeof(struct fpm_scoreboard_proc_s) * wp->config->pm_max_children;
++ shm_mem = fpm_shm_alloc(scoreboard_size + scoreboard_nprocs_size);
++
+ if (!shm_mem) {
+ return -1;
+ }
+- wp->scoreboard = shm_mem;
++ wp->scoreboard = shm_mem;
+ wp->scoreboard->nprocs = wp->config->pm_max_children;
+- shm_mem += scoreboard_size;
+- for (i = 0; i < wp->scoreboard->nprocs; i++) {
++ shm_mem += scoreboard_size;
++
++ for (i = 0; i < wp->scoreboard->nprocs; i++, shm_mem += sizeof(struct fpm_scoreboard_proc_s)) {
+ wp->scoreboard->procs[i] = shm_mem;
+- shm_mem += sizeof(struct fpm_scoreboard_proc_s);
+ }
+
+- wp->scoreboard->pm = wp->config->pm;
++ wp->scoreboard->pm = wp->config->pm;
+ wp->scoreboard->start_epoch = time(NULL);
+ strlcpy(wp->scoreboard->pool, wp->config->name, sizeof(wp->scoreboard->pool));
+ }
+@@ -234,15 +238,15 @@ void fpm_scoreboard_proc_release(struct fpm_scoreboard_proc_s *proc) /* {{{ */
+
+ void fpm_scoreboard_free(struct fpm_scoreboard_s *scoreboard) /* {{{ */
+ {
+- int i;
++ size_t scoreboard_size, scoreboard_nprocs_size;
+
+ if (!scoreboard) {
+ zlog(ZLOG_ERROR, "**scoreboard is NULL");
+ return;
+ }
+
+- int scoreboard_size = sizeof(struct fpm_scoreboard_s) + (scoreboard->nprocs) * sizeof(struct fpm_scoreboard_proc_s *);
+- int scoreboard_nprocs_size = sizeof(struct fpm_scoreboard_proc_s) * scoreboard->nprocs;
++ scoreboard_size = sizeof(struct fpm_scoreboard_s) + (scoreboard->nprocs) * sizeof(struct fpm_scoreboard_proc_s *);
++ scoreboard_nprocs_size = sizeof(struct fpm_scoreboard_proc_s) * scoreboard->nprocs;
+
+ fpm_shm_free(scoreboard, scoreboard_size + scoreboard_nprocs_size);
+ }
+--
+2.33.1
+
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/php.git/commitdiff/8359939cab722919c56e747283a64e725a78dcee
More information about the pld-cvs-commit
mailing list