From e6c47646601a9a7b4551174bd60f0cd00829e8af Mon Sep 17 00:00:00 2001 From: rofl0r Date: Mon, 21 Sep 2020 10:46:38 +0100 Subject: [PATCH] proxy_dns_old: use pipe2 if available, else O_CLOEXEC make the old code a little less lame --- src/core.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/core.c b/src/core.c index 42bd3e9..9dfba49 100644 --- a/src/core.c +++ b/src/core.c @@ -756,7 +756,7 @@ struct hostent* proxy_gethostbyname_old(const char *name) char buff[256]; in_addr_t addr; pid_t pid; - int status; + int status, ret; size_t l; struct hostent* hp; @@ -775,8 +775,17 @@ struct hostent* proxy_gethostbyname_old(const char *name) while ((hp=gethostent())) if (!strcmp(hp->h_name,name)) return hp; +#ifdef HAVE_PIPE2 + ret = pipe2(pipe_fd, O_CLOEXEC); +#else + ret = pipe(pipe_fd); + if(ret == 0) { + fcntl(pipe_fd[0], F_SETFD, FD_CLOEXEC); + fcntl(pipe_fd[1], F_SETFD, FD_CLOEXEC); + } +#endif - if(pipe(pipe_fd)) + if(ret) goto err; pid = fork(); switch(pid) {