In a multi-process/threaded environment, ev_util_read_file() could leak fds to child processes when not using O_CLOEXEC/FD_CLOEXEC. --- evutil.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/evutil.c b/evutil.c index 306f037..2bdacaa 100644 --- a/evutil.c +++ b/evutil.c @@ -125,10 +125,16 @@ evutil_read_file(const char *filename, char **content_out, size_t *len_out, if (is_binary) mode |= O_BINARY; #endif +#ifdef O_CLOEXEC + mode |= O_CLOEXEC; +#endif fd = open(filename, mode); if (fd < 0) return -1; +#if !defined(O_CLOEXEC) && defined(FD_CLOEXEC) + fcntl(fd, F_SETFD, FD_CLOEXEC); +#endif if (fstat(fd, &st) || st.st_size < 0 || st.st_size > EV_SSIZE_MAX-1 ) { close(fd); -- 1.7.5.4 *********************************************************************** To unsubscribe, send an e-mail to majord...@freehaven.net with unsubscribe libevent-users in the body.