aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Simons <jon@jonsimons.org>2013-11-21 11:40:15 -0800
committerAndreas Schneider <asn@cryptomilk.org>2013-11-22 10:34:49 +0100
commit7ab0e3fe6258d04b9c2b9424c134e2cafafe78c0 (patch)
treefd659d36f556f32359b2f0d97203fcfd59029d58
parent5da02d6de24bda0d17db888da94fc39abf76ce62 (diff)
downloadlibssh-7ab0e3fe6258d04b9c2b9424c134e2cafafe78c0.tar.gz
libssh-7ab0e3fe6258d04b9c2b9424c134e2cafafe78c0.tar.xz
libssh-7ab0e3fe6258d04b9c2b9424c134e2cafafe78c0.zip
channel: fix infinite loop in channel_write_common
BUG: https://red.libssh.org/issues/130 Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
-rw-r--r--src/channels.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/channels.c b/src/channels.c
index c62da229..6412a863 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -1327,7 +1327,9 @@ int channel_write_common(ssh_channel channel, const void *data,
"Wait for a growing window message...");
rc = ssh_handle_packets_termination(session, SSH_TIMEOUT_DEFAULT,
ssh_channel_waitwindow_termination,channel);
- if (rc == SSH_ERROR || !ssh_channel_waitwindow_termination(channel))
+ if (rc == SSH_ERROR ||
+ !ssh_channel_waitwindow_termination(channel) ||
+ channel->session->session_state == SSH_SESSION_STATE_ERROR)
goto out;
continue;
}