chiark / gitweb /
terminal-util: open /dev/null with O_CLOEXEC in make_stdio_null()
authorLennart Poettering <lennart@poettering.net>
Sat, 23 Dec 2017 23:54:40 +0000 (00:54 +0100)
committerSven Eden <yamakuzure@gmx.net>
Wed, 30 May 2018 05:49:43 +0000 (07:49 +0200)
Ultimately, O_CLOEXEC should be off in fd 0, 1, 2, but when we open
/dev/null here it's unlikely to be < 0, and after dupping the fd to 0,
1, 2 we turn off O_CLOEXEC explicitly anyway.

Unless we know that what we are about to open will return 0, 1 or 2 we
should always set O_CLOEXEC in order to be safe to other threads forking
of subprocesses at the wrong moment.

src/basic/terminal-util.c

index 3ece0697f0656d37a1d752545570ebf235dae2c2..c67b34073e381e50dbc1fb82417ed9cfdadc0110 100644 (file)
@@ -910,7 +910,7 @@ int make_stdio(int fd) {
 int make_null_stdio(void) {
         int null_fd;
 
-        null_fd = open("/dev/null", O_RDWR|O_NOCTTY);
+        null_fd = open("/dev/null", O_RDWR|O_NOCTTY|O_CLOEXEC);
         if (null_fd < 0)
                 return -errno;