From: Lennart Poettering Date: Wed, 13 Sep 2017 08:35:28 +0000 (+0200) Subject: pager: let's create pager fds with O_CLOEXEC first X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=0b0f1f6bc9447ad0d8abad941e384868b2932828;p=elogind.git 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. --- diff --git a/src/shared/pager.c b/src/shared/pager.c index 2c855bd8f..ce0f37066 100644 --- a/src/shared/pager.c +++ b/src/shared/pager.c @@ -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();