1
1

channels: Set error state when closed channel is read

When an attempt to read a closed channel happens, set the session error
state properly.

Signed-off-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Этот коммит содержится в:
Anderson Toshiyuki Sasaki 2018-12-03 17:27:08 +01:00 коммит произвёл Andreas Schneider
родитель d78a29eb79
Коммит 8e69d435ef

Просмотреть файл

@ -2766,8 +2766,13 @@ int ssh_channel_read_timeout(ssh_channel channel,
/*
* If the channel is closed or in an error state, reading from it is an error
*/
if (session->session_state == SSH_SESSION_STATE_ERROR ||
channel->state == SSH_CHANNEL_STATE_CLOSED) {
if (session->session_state == SSH_SESSION_STATE_ERROR) {
return SSH_ERROR;
}
if (channel->state == SSH_CHANNEL_STATE_CLOSED) {
ssh_set_error(session,
SSH_FATAL,
"Remote channel is closed.");
return SSH_ERROR;
}
if (channel->remote_eof && ssh_buffer_get_len(stdbuf) == 0) {