]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: check the return value of ssh_packet_write_poll() and
authordjm@openbsd.org <djm@openbsd.org>
Thu, 30 Jan 2020 07:20:57 +0000 (07:20 +0000)
committerDamien Miller <djm@mindrot.org>
Thu, 30 Jan 2020 07:22:34 +0000 (18:22 +1100)
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

clientloop.c

index 17015544216b09636a486a6828932a12be50bcaf..2590962b1ac84fbca961baafd144537530d2f38b 100644 (file)
@@ -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