From 920fc8bbe4240cb36653a1a7f6e459e7668c1643 Mon Sep 17 00:00:00 2001 From: William Lallemand Date: Tue, 14 May 2019 11:15:18 +0200 Subject: [PATCH] BUG/MINOR: mworker: use after free when the PID not assigned Commit 4528611 ("MEDIUM: mworker: store the leaving state of a process") introduced a bug in the mworker_env_to_proc_list() function. This is very unlikely to occur since the PID should always be assigned. It can probably happen if the environment variable is corrupted. No backport needed. --- src/mworker.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mworker.c b/src/mworker.c index 8df748d3fa..cac74102cd 100644 --- a/src/mworker.c +++ b/src/mworker.c @@ -180,14 +180,15 @@ void mworker_env_to_proc_list() } } if (child->pid) { + /* this is a process inherited from a reload that should be leaving */ + child->options |= PROC_O_LEAVING; + LIST_ADDQ(&proc_list, &child->list); } else { free(child->id); free(child); } - /* this is a process inherited from a reload that should be leaving */ - child->options |= PROC_O_LEAVING; } unsetenv("HAPROXY_PROCESSES"); -- 2.47.3