Commit 0d7c1e66 authored by Paul Eggert's avatar Paul Eggert

* process.c (allocate_pty) [PTY_OPEN]: Set fd's FD_CLOEXEC flag.

We can't portably rely on PTY_OPEN doing that, even if
it calls posix_openpt with O_CLOEXEC.
parent 6e50e983
2013-08-21 Paul Eggert <eggert@cs.ucla.edu>
* process.c (allocate_pty) [PTY_OPEN]: Set fd's FD_CLOEXEC flag.
We can't portably rely on PTY_OPEN doing that, even if
it calls posix_openpt with O_CLOEXEC.
2013-08-20 Kenichi Handa <handa@gnu.org>
* character.c (string_char): Improve commentary.
......
......@@ -687,6 +687,15 @@ allocate_pty (char pty_name[PTY_NAME_SIZE])
if (fd >= 0)
{
#ifdef PTY_OPEN
/* Set FD's close-on-exec flag. This is needed even if
PT_OPEN calls posix_openpt with O_CLOEXEC, since POSIX
doesn't require support for that combination.
Multithreaded platforms where posix_openpt ignores
O_CLOEXEC (or where PTY_OPEN doesn't call posix_openpt)
have a race condition between the PTY_OPEN and here. */
fcntl (fd, F_SETFD, FD_CLOEXEC);
#endif
/* check to make certain that both sides are available
this avoids a nasty yet stupid bug in rlogins */
#ifdef PTY_TTY_NAME_SPRINTF
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment