From 7ead723db077686a33d52af0991825807c058341 Mon Sep 17 00:00:00 2001 From: Amitay Isaacs Date: Wed, 10 Oct 2018 18:16:33 +1100 Subject: ctdb-common: Set close-on-exec for startup fd The startup_fd should not be propagated to the child processes created from a daemon. It should only be used in the daemon code to return the status of the startup. Another use of startup_fd is to notify the parent if the daemon process has exited. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13659 Signed-off-by: Amitay Isaacs Reviewed-by: Martin Schwenke (cherry picked from commit 80549927bc1741a4b8af8b8e830de4d37fa0c4a8) --- ctdb/common/sock_daemon.c | 8 +++++++- ctdb/common/sock_daemon.h | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'ctdb') diff --git a/ctdb/common/sock_daemon.c b/ctdb/common/sock_daemon.c index 03d3ac1f1ec..86cc2f2e502 100644 --- a/ctdb/common/sock_daemon.c +++ b/ctdb/common/sock_daemon.c @@ -517,9 +517,15 @@ int sock_daemon_add_unix(struct sock_daemon_context *sockd, return 0; } -void sock_daemon_set_startup_fd(struct sock_daemon_context *sockd, int fd) +bool sock_daemon_set_startup_fd(struct sock_daemon_context *sockd, int fd) { + if (! set_close_on_exec(fd)) { + D_ERR("Failed to set close-on-exec on startup fd\n"); + return false; + } + sockd->startup_fd = fd; + return true; } /* diff --git a/ctdb/common/sock_daemon.h b/ctdb/common/sock_daemon.h index a28f8c6f39c..fb0c6865328 100644 --- a/ctdb/common/sock_daemon.h +++ b/ctdb/common/sock_daemon.h @@ -214,8 +214,9 @@ int sock_daemon_add_unix(struct sock_daemon_context *sockd, * * @param[in] sockd Socket daemon context * @param[in] fd File descriptor + * @return true on success, false on error */ -void sock_daemon_set_startup_fd(struct sock_daemon_context *sockd, int fd); +bool sock_daemon_set_startup_fd(struct sock_daemon_context *sockd, int fd); /** * @brief Async computation start to run a socket daemon -- cgit v1.2.1