From 0bf78b0b8b8806f80348108dd9d7580ee9c3b20d Mon Sep 17 00:00:00 2001 From: David Kedves Date: Thu, 24 Mar 2016 15:46:23 +0100 Subject: [PATCH] channels: Bugfix for a possible invalid pointer usage (channel->session) in various places BUG: https://red.libssh.org/issues/230 Signed-off-by: David Kedves Reviewed-by: Andreas Schneider (cherry picked from commit d7df4429ebb59f5cae20625084fd464794eac817) --- src/channels.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/channels.c b/src/channels.c index 2c841ed3..30c31468 100644 --- a/src/channels.c +++ b/src/channels.c @@ -1245,7 +1245,7 @@ static int channel_write_common(ssh_channel channel, return -1; } - if (channel->session->session_state == SSH_SESSION_STATE_ERROR) { + if (session->session_state == SSH_SESSION_STATE_ERROR) { return SSH_ERROR; } #ifdef WITH_SSH1 @@ -1276,7 +1276,7 @@ static int channel_write_common(ssh_channel channel, ssh_channel_waitwindow_termination,channel); if (rc == SSH_ERROR || !ssh_channel_waitwindow_termination(channel) || - channel->session->session_state == SSH_SESSION_STATE_ERROR || + session->session_state == SSH_SESSION_STATE_ERROR || channel->state == SSH_CHANNEL_STATE_CLOSED) goto out; continue; @@ -2689,7 +2689,7 @@ int ssh_channel_read_timeout(ssh_channel channel, if (rc == SSH_ERROR){ return rc; } - if (channel->session->session_state == SSH_SESSION_STATE_ERROR){ + if (session->session_state == SSH_SESSION_STATE_ERROR){ return SSH_ERROR; } if (channel->remote_eof && buffer_get_rest_len(stdbuf) == 0) { @@ -2754,7 +2754,7 @@ int ssh_channel_read_nonblocking(ssh_channel channel, void *dest, uint32_t count to_read = ssh_channel_poll(channel, is_stderr); if (to_read <= 0) { - if (channel->session->session_state == SSH_SESSION_STATE_ERROR){ + if (session->session_state == SSH_SESSION_STATE_ERROR){ return SSH_ERROR; }