Don't inherit the --status and --ifconfig-pool-persist, and on Linux
the epoll(7), file descriptors to scripts and other processes that
may be forked by plugins.

Signed-off-by: Heiko Hund <heiko.h...@sophos.com>
---
 src/openvpn/event.c  |    3 +++
 src/openvpn/status.c |    2 ++
 2 files changed, 5 insertions(+)

diff --git a/src/openvpn/event.c b/src/openvpn/event.c
index 2a13e1c..34a3c45 100644
--- a/src/openvpn/event.c
+++ b/src/openvpn/event.c
@@ -34,6 +34,7 @@
 #include "error.h"
 #include "integer.h"
 #include "event.h"
+#include "fdmisc.h"

 #include "memdbg.h"

@@ -582,6 +583,8 @@ ep_init (int *maxevents, unsigned int flags)
   if (fd < 0)
     return NULL;

+  set_cloexec (fd);
+
   ALLOC_OBJ_CLEAR (eps, struct ep_set);

   /* set dispatch functions */
diff --git a/src/openvpn/status.c b/src/openvpn/status.c
index 5f9ab9e..8773f3d 100644
--- a/src/openvpn/status.c
+++ b/src/openvpn/status.c
@@ -33,6 +33,7 @@
 #include "status.h"
 #include "perf.h"
 #include "misc.h"
+#include "fdmisc.h"

 #include "memdbg.h"

@@ -98,6 +99,7 @@ status_open (const char *filename,
          if (so->fd >= 0)
            {
              so->filename = string_alloc (filename, NULL);
+              set_cloexec (so->fd);

              /* allocate read buffer */
              if (so->flags & STATUS_OUTPUT_READ)
-- 
1.7.9.5


Reply via email to