diff options
author | djm@openbsd.org <djm@openbsd.org> | 2015-02-23 16:33:25 +0000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2015-02-24 03:47:44 +1100 |
commit | f2293a65392b54ac721f66bc0b44462e8d1d81f8 (patch) | |
tree | 667d8ae6946e122d5598fbd32cf26cde582d78fd /clientloop.c | |
parent | f2004cd1adf34492eae0a44b1ef84e0e31b06088 (diff) |
upstream commit
fix setting/clearing of TTY raw mode around
UpdateHostKeys=ask confirmation question; reported by Herb Goldman
Diffstat (limited to 'clientloop.c')
-rw-r--r-- | clientloop.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/clientloop.c b/clientloop.c index ca3a4595..8969869b 100644 --- a/clientloop.c +++ b/clientloop.c @@ -1,4 +1,4 @@ -/* $OpenBSD: clientloop.c,v 1.270 2015/02/20 22:17:21 djm Exp $ */ +/* $OpenBSD: clientloop.c,v 1.271 2015/02/23 16:33:25 djm Exp $ */ /* * Author: Tatu Ylonen <ylo@cs.hut.fi> * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland @@ -2170,7 +2170,8 @@ hostkeys_find(struct hostkey_foreach_line *l, void *_ctx) static void update_known_hosts(struct hostkeys_update_ctx *ctx) { - int r, loglevel = options.update_hostkeys == SSH_UPDATE_HOSTKEYS_ASK ? + int r, was_raw = 0; + int loglevel = options.update_hostkeys == SSH_UPDATE_HOSTKEYS_ASK ? SYSLOG_LEVEL_INFO : SYSLOG_LEVEL_VERBOSE; char *fp, *response; size_t i; @@ -2194,7 +2195,10 @@ update_known_hosts(struct hostkeys_update_ctx *ctx) free(fp); } if (options.update_hostkeys == SSH_UPDATE_HOSTKEYS_ASK) { - leave_raw_mode(options.request_tty == REQUEST_TTY_FORCE); + if (get_saved_tio() != NULL) { + leave_raw_mode(1); + was_raw = 1; + } response = NULL; for (i = 0; !quit_pending && i < 3; i++) { free(response); @@ -2214,7 +2218,8 @@ update_known_hosts(struct hostkeys_update_ctx *ctx) if (quit_pending || i >= 3 || response == NULL) options.update_hostkeys = 0; free(response); - enter_raw_mode(options.request_tty == REQUEST_TTY_FORCE); + if (was_raw) + enter_raw_mode(1); } /* |