From: David Sommerseth Date: Fri, 5 Sep 2014 12:26:32 +0000 (+0200) Subject: Don't let openvpn_popen() keep zombies around X-Git-Tag: v2.4_alpha1~385 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d886d468849051af525bb8ff1b9080f6c934e3ab;p=thirdparty%2Fopenvpn.git Don't let openvpn_popen() keep zombies around Commit 9449e6a9eba30c9ed054f57d630a88c9f087080f introduced the openvpn_popen() function to support retrieving passwords via systemd. It was discovered that the child processes openvpn fork()ed would be lingering around until openvpn stopped. This was due to the lack of a wait() call. This patch also cleans up a few minor white-space issues in the same code segment. [v2 proper initialisation of status variable] Signed-off-by: David Sommerseth Acked-by: Gert Doering Message-Id: 1409930731-15263-2-git-send-email-davids@redhat.com URL: http://article.gmane.org/gmane.network.openvpn.devel/9021 --- diff --git a/src/openvpn/misc.c b/src/openvpn/misc.c index 63b4c1cfa..19bbef7d4 100644 --- a/src/openvpn/misc.c +++ b/src/openvpn/misc.c @@ -376,8 +376,11 @@ openvpn_popen (const struct argv *a, const struct env_set *es) } else /* parent side */ { - ret=pipe_stdout[0]; - close (pipe_stdout[1]); + int status = 0; + + waitpid(pid, &status, 0); + ret = pipe_stdout[0]; + close (pipe_stdout[1]); } } else {