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.
diff --git a/src/mworker.c b/src/mworker.c
index 8df748d..cac7410 100644
--- a/src/mworker.c
+++ b/src/mworker.c
@@ -180,14 +180,15 @@
}
}
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");