summaryrefslogtreecommitdiffstats
path: root/ttymodes.c
diff options
context:
space:
mode:
authordtucker@openbsd.org <dtucker@openbsd.org>2018-02-16 05:43:11 +0100
committerDarren Tucker <dtucker@dtucker.net>2018-02-16 13:25:48 +0100
commit8570177195f6a4b3173c0a25484a83641ee3faa6 (patch)
tree78df7e06034432fcb912b5c9e5f01a6a304a8890 /ttymodes.c
parentfreezero should check for NULL. (diff)
downloadopenssh-8570177195f6a4b3173c0a25484a83641ee3faa6.tar.xz
openssh-8570177195f6a4b3173c0a25484a83641ee3faa6.zip
upstream: 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@ OpenBSD-Commit-ID: 26425855402d870c3c0a90491e72e2a8a342ceda
Diffstat (limited to 'ttymodes.c')
-rw-r--r--ttymodes.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/ttymodes.c b/ttymodes.c
index 845139635..f9fdb92de 100644
--- a/ttymodes.c
+++ b/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
@@ -56,6 +56,7 @@
#include "log.h"
#include "compat.h"
#include "buffer.h"
+#include "compat.h"
#define TTY_OP_END 0
/*
@@ -308,9 +309,15 @@ tty_make_modes(int fd, struct termios *tiop)
buffer_put_char(&buf, OP); \
buffer_put_int(&buf, special_char_encode(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"