]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: mworker: use after free when the PID not assigned
authorWilliam Lallemand <wlallemand@haproxy.com>
Tue, 14 May 2019 09:15:18 +0000 (11:15 +0200)
committerWilliam Lallemand <wlallemand@haproxy.org>
Tue, 14 May 2019 09:28:16 +0000 (11:28 +0200)
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

index 8df748d3fac38c8b07783b3af1f2c9844b177d91..cac74102cd8d28be1129eb5f43481951b24bfd6e 100644 (file)
@@ -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");