X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/fe75e5033cd83f2ddc537457d96625044d168433..89e97516fedf1d0a7fe9c569bb569fa7ea872afa:/unix/uxpty.c diff --git a/unix/uxpty.c b/unix/uxpty.c index 50e53714..e47f7981 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); + fcntl(pty->slave_fd, F_SETFD, FD_CLOEXEC); + } 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 */ + fcntl(pty->master_fd, F_SETFD, FD_CLOEXEC); + 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); } + fcntl(pty->master_fd, F_SETFD, FD_CLOEXEC); + pty->name[FILENAME_MAX-1] = '\0'; strncpy(pty->name, ptsname(pty->master_fd), FILENAME_MAX-1); #endif