aboutsummaryrefslogtreecommitdiff
path: root/src/channels.c
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:23 +0100
commit3d934f3ddc6bffd87db7b924ea6e6add138ebf6f (patch)
treeeefa205af996ccef8b4792d2a210442ca50bdf20 /src/channels.c
parent06cc94eecf13e27617a21ea107955752e20e8a59 (diff)
downloadlibssh-3d934f3ddc6bffd87db7b924ea6e6add138ebf6f.tar.gz
libssh-3d934f3ddc6bffd87db7b924ea6e6add138ebf6f.tar.xz
libssh-3d934f3ddc6bffd87db7b924ea6e6add138ebf6f.zip
channel: fix infinite loop in channel_write_common
BUG: https://red.libssh.org/issues/130 Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src/channels.c')
-rw-r--r--src/channels.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/channels.c b/src/channels.c
index 78d9ff75..0a8b9f2f 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -1329,7 +1329,9 @@ static int channel_write_common(ssh_channel channel,
"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;
}