From 8640e111358257bbdd19582c0cac6166e87bd277 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 24 May 2010 18:59:46 +0200 Subject: [PATCH] sd-daemon: set FD_CLOEXEC by default --- src/sd-daemon.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/sd-daemon.c b/src/sd-daemon.c index eec472270..2e1bf3213 100644 --- a/src/sd-daemon.c +++ b/src/sd-daemon.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -41,7 +42,7 @@ int sd_listen_fds(int unset_environment) { #ifdef DISABLE_SYSTEMD return 0; #else - int r; + int r, fd; const char *e; char *p = NULL; unsigned long l; @@ -88,6 +89,24 @@ int sd_listen_fds(int unset_environment) { goto finish; } + + for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + (int) l; fd ++) { + int flags; + + if ((flags = fcntl(fd, F_GETFD)) < 0) { + r = -errno; + goto finish; + } + + if (flags & FD_CLOEXEC) + continue; + + if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) < 0) { + r = -errno; + goto finish; + } + } + r = (int) l; finish: -- 2.30.2