diff options
authorLennart Poettering <>2017-09-13 10:35:28 +0200
committerSven Eden <>2017-09-13 10:35:28 +0200
commit0b0f1f6bc9447ad0d8abad941e384868b2932828 (patch)
parent351eb5dc200ace8bc0b06fafb99a2934c35058d8 (diff)
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.
1 files changed, 1 insertions, 1 deletions
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();