summaryrefslogtreecommitdiffstats
path: root/usr.bin/write/write.c
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>1995-11-17 12:39:20 +0000
committerderaadt <deraadt@openbsd.org>1995-11-17 12:39:20 +0000
commit996f35a12d480d934ab6ca9bd931b57fbe2cf38e (patch)
treee3f37e832d49d661ed6b9eccb2dc57dc22e14186 /usr.bin/write/write.c
parentadd si1 (diff)
downloadwireguard-openbsd-996f35a12d480d934ab6ca9bd931b57fbe2cf38e.tar.xz
wireguard-openbsd-996f35a12d480d934ab6ca9bd931b57fbe2cf38e.zip
handle meta characters; good security idea from freebsd
Diffstat (limited to 'usr.bin/write/write.c')
-rw-r--r--usr.bin/write/write.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/usr.bin/write/write.c b/usr.bin/write/write.c
index 3dc298f8cd1..00d5e169e2e 100644
--- a/usr.bin/write/write.c
+++ b/usr.bin/write/write.c
@@ -304,12 +304,17 @@ wr_fputs(s)
c = toascii(*s);
if (c == '\n') {
PUTC('\r');
- PUTC('\n');
} else if (!isprint(c) && !isspace(c) && c != '\007') {
- PUTC('^');
- PUTC(c^0x40); /* DEL to ?, others to alpha */
- } else
- PUTC(c);
+ if (c & 0x80) {
+ PUTC('M');
+ PUTC('-');
+ c &= ~0x80;
+ } else {
+ PUTC('^');
+ c &= ~0x40;
+ }
+ }
+ PUTC(c);
}
return;