summaryrefslogtreecommitdiffstats
path: root/usr.bin/ssh/ttymodes.c
diff options
context:
space:
mode:
authordtucker <dtucker@openbsd.org>2018-02-16 04:43:11 +0000
committerdtucker <dtucker@openbsd.org>2018-02-16 04:43:11 +0000
commiteac342a1aa4fcedd309607896bd94166914a21b4 (patch)
treeb0657b81bcc6c378eb08429c7cb10082e3a67a85 /usr.bin/ssh/ttymodes.c
parentput egre back in a tree (diff)
downloadwireguard-openbsd-eac342a1aa4fcedd309607896bd94166914a21b4.tar.xz
wireguard-openbsd-eac342a1aa4fcedd309607896bd94166914a21b4.zip
Don't send IUTF8 to servers that don't like them.
Some SSH servers eg "ConfD" drop the connection if the client sends the new IUTF8 (RFC8160) terminal mode even if it's not set. Add a bug bit for such servers and avoid sending IUTF8 to them. ok djm@
Diffstat (limited to 'usr.bin/ssh/ttymodes.c')
-rw-r--r--usr.bin/ssh/ttymodes.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/usr.bin/ssh/ttymodes.c b/usr.bin/ssh/ttymodes.c
index 09729ba04f8..65e0888a11a 100644
--- a/usr.bin/ssh/ttymodes.c
+++ b/usr.bin/ssh/ttymodes.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ttymodes.c,v 1.32 2017/04/30 23:26:54 djm Exp $ */
+/* $OpenBSD: ttymodes.c,v 1.33 2018/02/16 04:43:11 dtucker Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -54,6 +54,7 @@
#include "log.h"
#include "compat.h"
#include "buffer.h"
+#include "compat.h"
#define TTY_OP_END 0
/*
@@ -280,9 +281,15 @@ tty_make_modes(int fd, struct termios *tiop)
buffer_put_char(&buf, OP); \
buffer_put_int(&buf, tio.c_cc[NAME]);
+#define SSH_TTYMODE_IUTF8 42 /* for SSH_BUG_UTF8TTYMODE */
+
#define TTYMODE(NAME, FIELD, OP) \
- buffer_put_char(&buf, OP); \
- buffer_put_int(&buf, ((tio.FIELD & NAME) != 0));
+ if (OP == SSH_TTYMODE_IUTF8 && (datafellows & SSH_BUG_UTF8TTYMODE)) { \
+ debug3("%s: SSH_BUG_UTF8TTYMODE", __func__); \
+ } else { \
+ buffer_put_char(&buf, OP); \
+ buffer_put_int(&buf, ((tio.FIELD & NAME) != 0)); \
+ }
#include "ttymodes.h"