[openssh-commits] [openssh] 02/02: upstream: when deciding whether to enable keystroke timing

git+noreply at mindrot.org git+noreply at mindrot.org
Thu Nov 16 09:53:59 AEDT 2023


This is an automated email from the git hooks/post-receive script.

djm pushed a commit to branch master
in repository openssh.

commit 050c335c8da43741ed0df2570ebfbd5d1dfd0a31
Author: djm at openbsd.org <djm at openbsd.org>
Date:   Wed Nov 15 22:51:49 2023 +0000

    upstream: when deciding whether to enable keystroke timing
    
    obfuscation, only consider enabling it when a channel with a tty is open.
    
    Avoids turning on the obfucation when X11 forwarding only is in use,
    which slows it right down. Reported by Roger Marsh
    
    OpenBSD-Commit-ID: c292f738db410f729190f92de100c39ec931a4f1
---
 channels.c   | 19 ++++++++++++++++++-
 channels.h   |  3 ++-
 clientloop.c |  4 ++--
 3 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/channels.c b/channels.c
index 598ff322..38135e5a 100644
--- a/channels.c
+++ b/channels.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: channels.c,v 1.433 2023/09/04 00:01:46 djm Exp $ */
+/* $OpenBSD: channels.c,v 1.434 2023/11/15 22:51:49 djm Exp $ */
 /*
  * Author: Tatu Ylonen <ylo at cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo at cs.hut.fi>, Espoo, Finland
@@ -898,6 +898,23 @@ channel_still_open(struct ssh *ssh)
 	return 0;
 }
 
+/* Returns true if a channel with a TTY is open. */
+int
+channel_tty_open(struct ssh *ssh)
+{
+	u_int i;
+	Channel *c;
+
+	for (i = 0; i < ssh->chanctxt->channels_alloc; i++) {
+		c = ssh->chanctxt->channels[i];
+		if (c == NULL || c->type != SSH_CHANNEL_OPEN)
+			continue;
+		if (c->client_tty)
+			return 1;
+	}
+	return 0;
+}
+
 /* Returns the id of an open channel suitable for keepaliving */
 int
 channel_find_open(struct ssh *ssh)
diff --git a/channels.h b/channels.h
index 58019a84..3054b04d 100644
--- a/channels.h
+++ b/channels.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: channels.h,v 1.152 2023/09/04 00:01:46 djm Exp $ */
+/* $OpenBSD: channels.h,v 1.153 2023/11/15 22:51:49 djm Exp $ */
 
 /*
  * Author: Tatu Ylonen <ylo at cs.hut.fi>
@@ -340,6 +340,7 @@ int	 channel_output_poll(struct ssh *);
 int      channel_not_very_much_buffered_data(struct ssh *);
 void     channel_close_all(struct ssh *);
 int      channel_still_open(struct ssh *);
+int	 channel_tty_open(struct ssh *);
 const char *channel_format_extended_usage(const Channel *);
 char	*channel_open_message(struct ssh *);
 int	 channel_find_open(struct ssh *);
diff --git a/clientloop.c b/clientloop.c
index 8e323a60..c5a92409 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: clientloop.c,v 1.400 2023/10/12 02:12:53 djm Exp $ */
+/* $OpenBSD: clientloop.c,v 1.401 2023/11/15 22:51:49 djm Exp $ */
 /*
  * Author: Tatu Ylonen <ylo at cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo at cs.hut.fi>, Espoo, Finland
@@ -589,7 +589,7 @@ obfuscate_keystroke_timing(struct ssh *ssh, struct timespec *timeout,
 	if (options.obscure_keystroke_timing_interval <= 0)
 		return 1;	/* disabled in config */
 
-	if (!channel_still_open(ssh) || quit_pending) {
+	if (!channel_tty_open(ssh) || quit_pending) {
 		/* Stop if no channels left of we're waiting for one to close */
 		stop_reason = "no active channels";
 	} else if (ssh_packet_is_rekeying(ssh)) {

-- 
To stop receiving notification emails like this one, please contact
djm at mindrot.org.


More information about the openssh-commits mailing list