diff --git a/src/charon/charon.c b/src/charon/charon.c index a82aa4256..8afac3fff 100644 --- a/src/charon/charon.c +++ b/src/charon/charon.c @@ -26,6 +26,8 @@ #include #include #include +#include +#include #include #include @@ -232,6 +234,14 @@ static bool check_pidfile() pidfile = fopen(PID_FILE, "w"); if (pidfile) { + int fd; + + fd = fileno(pidfile); + if (fd == -1 || fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) + { + DBG1(DBG_LIB, "setting FD_CLOEXEC for '"PID_FILE"' failed: %s", + strerror(errno)); + } ignore_result(fchown(fileno(pidfile), lib->caps->get_uid(lib->caps), lib->caps->get_gid(lib->caps))); diff --git a/src/libstrongswan/plugins/random/random_plugin.c b/src/libstrongswan/plugins/random/random_plugin.c index 1f1079240..e159751be 100644 --- a/src/libstrongswan/plugins/random/random_plugin.c +++ b/src/libstrongswan/plugins/random/random_plugin.c @@ -89,6 +89,11 @@ static bool open_dev(char *file, int *fd) DBG1(DBG_LIB, "opening \"%s\" failed: %s", file, strerror(errno)); return FALSE; } + if (fcntl(*fd, F_SETFD, FD_CLOEXEC) == -1) + { + DBG1(DBG_LIB, "setting FD_CLOEXEC for \"%s\" failed: %s", + file, strerror(errno)); + } return TRUE; }