diff options
| -rw-r--r-- | attach.c | 8 | ||||
| -rw-r--r-- | master.c | 5 |
2 files changed, 10 insertions, 3 deletions
@@ -237,12 +237,16 @@ attach_main(int noerror) /* stdin activity */ if (n > 0 && FD_ISSET(0, &readfds)) { + ssize_t len; + pkt.type = MSG_PUSH; memset(pkt.u.buf, 0, sizeof(pkt.u.buf)); - pkt.len = read(0, pkt.u.buf, sizeof(pkt.u.buf)); + len = read(0, pkt.u.buf, sizeof(pkt.u.buf)); - if (pkt.len <= 0) + if (len <= 0) exit(1); + + pkt.len = len; process_kbd(s, &pkt); n--; } @@ -351,7 +351,10 @@ client_activity(struct client *p) /* Push out data to the program. */ if (pkt.type == MSG_PUSH) - write(the_pty.fd, pkt.u.buf, pkt.len); + { + if (pkt.len <= sizeof(pkt.u.buf)) + write(the_pty.fd, pkt.u.buf, pkt.len); + } /* Attach or detach from the program. */ else if (pkt.type == MSG_ATTACH) |
