summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordjm@openbsd.org <djm@openbsd.org>2020-01-30 07:20:57 +0000
committerDamien Miller <djm@mindrot.org>2020-01-30 18:22:34 +1100
commit65d6fd0a8a6f31c3ddf0c1192429a176575cf701 (patch)
tree2274753633e4c7c10c58c293598ad661fb4b211b
parentdce74eab0c0f9010dc84c62500a17771d0131ff3 (diff)
upstream: check the return value of ssh_packet_write_poll() and
call sshpkt_fatal() if it fails; avoid potential busy-loop under some circumstances. Based on patch by Mike Frysinger; ok dtucker@ OpenBSD-Commit-ID: c79fe5cf4f0cd8074cb6db257c1394d5139408ec
-rw-r--r--clientloop.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/clientloop.c b/clientloop.c
index 17015544..2590962b 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: clientloop.c,v 1.337 2020/01/29 08:17:49 djm Exp $ */
+/* $OpenBSD: clientloop.c,v 1.338 2020/01/30 07:20:57 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1392,8 +1392,12 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg,
* Send as much buffered packet data as possible to the
* sender.
*/
- if (FD_ISSET(connection_out, writeset))
- ssh_packet_write_poll(ssh);
+ if (FD_ISSET(connection_out, writeset)) {
+ if ((r = ssh_packet_write_poll(ssh)) != 0) {
+ sshpkt_fatal(ssh, r,
+ "%s: ssh_packet_write_poll", __func__);
+ }
+ }
/*
* If we are a backgrounded control master, and the