X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/6226c9390d23d6868edde63b9568891cd88631cc..9694f3718219a388edcf672fa0a663298bd2475c:/unix/uxpty.c diff --git a/unix/uxpty.c b/unix/uxpty.c index 50e53714..cc01a67b 100644 --- a/unix/uxpty.c +++ b/unix/uxpty.c @@ -275,8 +275,10 @@ static void fatal_sig_handler(int signum) static int pty_open_slave(Pty pty) { - if (pty->slave_fd < 0) + if (pty->slave_fd < 0) { pty->slave_fd = open(pty->name, O_RDWR); + cloexec(pty->slave_fd); + } return pty->slave_fd; } @@ -307,6 +309,8 @@ static void pty_open_master(Pty pty) strcpy(pty->name, master_name); pty->name[5] = 't'; /* /dev/ptyXX -> /dev/ttyXX */ + cloexec(pty->master_fd); + if (pty_open_slave(pty) >= 0 && access(pty->name, R_OK | W_OK) == 0) goto got_one; @@ -346,6 +350,8 @@ static void pty_open_master(Pty pty) exit(1); } + cloexec(pty->master_fd); + pty->name[FILENAME_MAX-1] = '\0'; strncpy(pty->name, ptsname(pty->master_fd), FILENAME_MAX-1); #endif