summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoranton <anton@openbsd.org>2017-06-18 17:49:44 +0000
committeranton <anton@openbsd.org>2017-06-18 17:49:44 +0000
commitd63293c4717d287cde8ccdd51ad5353d83ca5986 (patch)
treea67f9e8cdc4abe0cd3dcf8b3584bd80091391064
parentImplement appending to standard man(7) and mdoc(7) macros with .am. (diff)
downloadwireguard-openbsd-d63293c4717d287cde8ccdd51ad5353d83ca5986.tar.xz
wireguard-openbsd-d63293c4717d287cde8ccdd51ad5353d83ca5986.zip
Don't write input if ICANON is enabled. Also, write one byte at a time.
-rw-r--r--regress/bin/ksh/edit/edit.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/regress/bin/ksh/edit/edit.c b/regress/bin/ksh/edit/edit.c
index 0e707af294c..247e0b0ab2e 100644
--- a/regress/bin/ksh/edit/edit.c
+++ b/regress/bin/ksh/edit/edit.c
@@ -34,6 +34,7 @@ int
main(int argc, char *argv[])
{
char in[BUFSIZ], out[BUFSIZ];
+ struct termios tio;
struct pollfd pfd;
struct winsize ws;
pid_t pid;
@@ -100,7 +101,12 @@ main(int argc, char *argv[])
if (nread == 0)
continue;
- n = write(ptyfd, &in[nwrite], nin - nwrite);
+ if (tcgetattr(ptyfd, &tio) == -1)
+ err(1, "tcgetattr");
+ if ((tio.c_lflag & ICANON) == ICANON)
+ continue;
+
+ n = write(ptyfd, &in[nwrite], 1);
if (n == -1)
err(1, "write");
nwrite += n;