X-Git-Url: https://git.wh0rd.org/?p=patches.git;a=blobdiff_plain;f=udhcp-close-fds.patch;fp=udhcp-close-fds.patch;h=ad6ac5cb85955bc8e7e44754da0f5185efb25ea1;hp=0000000000000000000000000000000000000000;hb=b53d1f41b32c8078c755a63c7bf0d2852263ee99;hpb=6d7b707a99652eefa9b245d8f1e0053f3583c79c diff --git a/udhcp-close-fds.patch b/udhcp-close-fds.patch new file mode 100644 index 0000000..ad6ac5c --- /dev/null +++ b/udhcp-close-fds.patch @@ -0,0 +1,33 @@ +Index: signalpipe.c +=================================================================== +--- signalpipe.c (revision 14725) ++++ signalpipe.c (working copy) +@@ -20,6 +20,7 @@ + */ + + #include ++#include + #include + #include + #include +@@ -43,6 +44,8 @@ static void signal_handler(int sig) + void udhcp_sp_setup(void) + { + socketpair(AF_UNIX, SOCK_STREAM, 0, signal_pipe); ++ fcntl(signal_pipe[0], F_SETFD, FD_CLOEXEC); ++ fcntl(signal_pipe[1], F_SETFD, FD_CLOEXEC); + signal(SIGUSR1, signal_handler); + signal(SIGUSR2, signal_handler); + signal(SIGTERM, signal_handler); +@@ -56,7 +59,10 @@ int udhcp_sp_fd_set(fd_set *rfds, int ex + { + FD_ZERO(rfds); + FD_SET(signal_pipe[0], rfds); +- if (extra_fd >= 0) FD_SET(extra_fd, rfds); ++ if (extra_fd >= 0) { ++ fcntl(extra_fd, F_SETFD, FD_CLOEXEC); ++ FD_SET(extra_fd, rfds); ++ } + return signal_pipe[0] > extra_fd ? signal_pipe[0] : extra_fd; + } +