From 653305628989ded07c65e815b32cf0e50f95077f Mon Sep 17 00:00:00 2001 From: Glenn Strauss Date: Fri, 4 Nov 2016 18:05:45 -0400 Subject: [PATCH] [mod_cgi] FreeBSD 9.3/MacOSX does not have pipe2() (fixes #2765) FreeBSD 9.3 has O_CLOEXEC, but does not have pipe2() until FreeBSD 10. FreeBSD 10 also adds SOCK_CLOEXEC, so use that as indicator https://wiki.freebsd.org/AtomicCloseOnExec Note: FreeBSD 9.3 will soon reach its "extended" EOL date (31 Dec 2016), so those using FreeBSD 9.3 should consider upgrading. https://www.freebsd.org/security/security.html#sup Mac OS X does not have pipe2(). User reported: Undefined symbols for architecture x86_64: "_pipe2", referenced from: _mod_cgi_handle_subrequest in mod_cgi.o x-ref: "Undefined symbols _pipe2" https://redmine.lighttpd.net/issues/2765 --- src/mod_cgi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mod_cgi.c b/src/mod_cgi.c index 64d3b129..ed8c9167 100644 --- a/src/mod_cgi.c +++ b/src/mod_cgi.c @@ -36,7 +36,8 @@ #include #include -#if defined(O_CLOEXEC) && (!defined(__FreeBSD__) || defined(F_DUPFD_CLOEXEC)) +#if defined(O_CLOEXEC) && (!defined(__FreeBSD__) || defined(SOCK_CLOEXEC)) \ + && !(defined(__APPLE__) && defined(__MACH__)) #define pipe_cloexec(pipefd) pipe2((pipefd), O_CLOEXEC) #elif defined FD_CLOEXEC #define pipe_cloexec(pipefd) \ -- 2.11.4.GIT