gio-unix: Use EPOLL_CLOEXEC by default

First, there's no reason not to use the new `epoll_create1` system call,
which quickly obsoleted `epoll_create` which has an obsolete and
unused size argument.

But more specifically, it offers `EPOLL_CLOEXEC` which we want
to use for general hygeine - there's no reason to potentially
leak this file descriptor to forked processes.

(GLib itself carefully closes file descriptors when forking child
 processes, but it may be linked with other software that doesn't;
 notably in my case for example the Rust standard library does not
 do this and hence relies more on the application code using
 `O_CLOEXEC` and variants)

This is just a drive-by fix; I saw the system call when I was using
`strace` to debug something else in rpm-ostree.
This commit is contained in:
Colin Walters 2022-08-26 04:05:40 -04:00
parent c135882e7e
commit 426fab1eca

View File

@ -82,9 +82,9 @@ _g_fd_is_pollable (int fd)
struct epoll_event ev = { 0, };
gboolean add_succeeded;
efd = epoll_create (1);
efd = epoll_create1 (EPOLL_CLOEXEC);
if (efd == -1)
g_error ("epoll_create () failed: %s", g_strerror (errno));
g_error ("epoll_create1 () failed: %s", g_strerror (errno));
ev.events = EPOLLIN;