On Sat, Feb 11, 2012 at 10:34 AM, Ross Lagerwall <rosslagerw...@gmail.com> wrote: > In a multi-process/threaded environment, ev_util_read_file() > could leak fds to child processes when not using O_CLOEXEC/FD_CLOEXEC.
Hm. I'm not sure I trust "#ifdef O_CLOEXEC" as a test for whether open() supports O_CLOEXEC. Generally, I'd prefer a solution that falls back gracefully if Libevent is built with headers from a newer libc/kernel and then run on an older kernel. (This is a real concern: it seems to happen to RHEL/Centos users pretty often.) Unfortunately, it seems we can't just do a pattern of if ((fd = open(path, flags|O_CLOEXEC)) == -1) { fd = open(path, flags); if (fd == -1) return -1; fcntl(fd,...) } because (if my tests are right) at least some implementations of open() ignore unrecognized flags. So given that, maybe the solution you suggest is the best we can do? Additionally, I see 3 other open()s: two in arc4random.c and one in devpoll.c. Maybe this means we want an evutil_* wrapper function to set CLOEXEC on fds. thoughts? -- Nick *********************************************************************** To unsubscribe, send an e-mail to majord...@freehaven.net with unsubscribe libevent-users in the body.