From 0b0f1f6bc9447ad0d8abad941e384868b2932828 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Sep 2017 10:35:28 +0200 Subject: [PATCH] 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. --- src/shared/pager.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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(); -- 2.30.2