Always mark pipe in pipe-open as inherit-on-exec
authorLeon Timmermans <fawaka@gmail.com>
Sat, 15 Dec 2018 18:08:41 +0000 (19:08 +0100)
committerLeon Timmermans <fawaka@gmail.com>
Sat, 15 Dec 2018 21:25:53 +0000 (22:25 +0100)
commitc6fe5b981b942ddabb23ed4b7602067e906e6d88
treefca3d5f149b36d5e320f58da5dfb70e89f9db52d
parentc950d6fa306a1a0a1e28ece3646aec9490a7ea0e
Always mark pipe in pipe-open as inherit-on-exec

Since 2cdf406a a lot of file descriptors are opened close-on-exec,
including the pipe that is passed to the child process in a pipe-open.
This is usually fine because a dup2 follows to rename that handle to
stdin/stdout that will set the inherit-on-exec. However, if the pipe
descriptor already has the right value, for example because stdin was
closed, then no dup2 happens and hence it's still marked as
close-on-exec right when we want to perform an exec.

This patch explicitly marks such a handle as inherit-on-exec, to ensure
it will be open for the child process.
util.c