X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/2916fa1404c5e3661440f174c3d3fa06c3482aad..8a9977e54db756281cf0d9f4a8322ce24b001a61:/unix/uxpty.c diff --git a/unix/uxpty.c b/unix/uxpty.c index b54ed417..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 @@ -865,6 +871,8 @@ static const char *pty_init(void *frontend, void **backend_handle, Config *cfg, *backend_handle = pty; + *realhost = dupprintf("\0"); + return NULL; } @@ -1006,10 +1014,10 @@ static const struct telnet_special *pty_get_specials(void *handle) return NULL; } -static Socket pty_socket(void *handle) +static int pty_connected(void *handle) { /* Pty pty = (Pty)handle; */ - return NULL; /* shouldn't ever be needed */ + return TRUE; } static int pty_sendok(void *handle) @@ -1066,7 +1074,7 @@ Backend pty_backend = { pty_size, pty_special, pty_get_specials, - pty_socket, + pty_connected, pty_exitcode, pty_sendok, pty_ldisc,