mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
Issue #12607: In subprocess, fix issue where if stdin, stdout or stderr is
given as a low fd, it gets overwritten.
This commit is contained in:
parent
45686b472b
commit
d98646e430
4 changed files with 76 additions and 0 deletions
|
@ -69,6 +69,13 @@ static void child_exec(char *const exec_array[],
|
|||
}
|
||||
POSIX_CALL(close(errpipe_read));
|
||||
|
||||
/* When duping fds, if there arises a situation where one of the fds is
|
||||
either 0, 1 or 2, it is possible that it is overwritten (#12607). */
|
||||
if (c2pwrite == 0)
|
||||
POSIX_CALL(c2pwrite = dup(c2pwrite));
|
||||
if (errwrite == 0 || errwrite == 1)
|
||||
POSIX_CALL(errwrite = dup(errwrite));
|
||||
|
||||
/* Dup fds for child.
|
||||
dup2() removes the CLOEXEC flag but we must do it ourselves if dup2()
|
||||
would be a no-op (issue #10806). */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue