]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Don't let openvpn_popen() keep zombies around
authorDavid Sommerseth <davids@redhat.com>
Fri, 5 Sep 2014 12:26:32 +0000 (14:26 +0200)
committerDavid Sommerseth <davids@redhat.com>
Tue, 9 Sep 2014 17:17:39 +0000 (19:17 +0200)
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 <davids@redhat.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: 1409930731-15263-2-git-send-email-davids@redhat.com
URL: http://article.gmane.org/gmane.network.openvpn.devel/9021

src/openvpn/misc.c

index 63b4c1cfa3867d21006aa646e488a006f3feb918..19bbef7d4a41aee643b5a9671b16d46542e6e1a1 100644 (file)
@@ -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 {