From 2da59394ec858ae5aecf2b26ab8d9fefdae17bb8 Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Tue, 8 Nov 2016 20:46:05 +0100 Subject: lib: add and use set_cloexec() watchquagga is already leaking an open file descriptor on its pid file on fork+exec() invocations; next up is adding vtysh support with even more fds. Mark things CLOEXEC before going there. Signed-off-by: David Lamparter --- lib/network.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'lib/network.c') diff --git a/lib/network.c b/lib/network.c index 5379ecb5a6..506e019136 100644 --- a/lib/network.c +++ b/lib/network.c @@ -94,6 +94,20 @@ set_nonblocking(int fd) return 0; } +int +set_cloexec(int fd) +{ + int flags; + flags = fcntl(fd, F_GETFD, 0); + if (flags == -1) + return -1; + + flags |= FD_CLOEXEC; + if (fcntl(fd, F_SETFD, flags) == -1) + return -1; + return 0; +} + float htonf (float host) { -- cgit v1.2.3