pager: let's create pager fds with O_CLOEXEC first

We make copies (without O_CLOEXEC) of the fds anyway before using them,
hence let's be safe and create them with O_CLOEXEC first, so that we
don't run into issues should pager_open() be called in a threaded
environment where another thread fork()s at the wrong time and ends up
with fds not marked O_CLOEXEC.
This commit is contained in:
Lennart Poettering 2017-09-13 10:35:28 +02:00
parent dea374e898
commit d262e99e39

View file

@ -84,7 +84,7 @@ int pager_open(bool no_pager, bool jump_to_end) {
* pager so that we get the value from the actual tty */
(void) columns();
if (pipe(fd) < 0)
if (pipe2(fd, O_CLOEXEC) < 0)
return log_error_errno(errno, "Failed to create pager pipe: %m");
parent_pid = getpid_cached();