sftp: Check if the channel is still valid
Fixes T138 Reported-by: Jan Pazdziora <jpazdziora@redhat.com> Signed-off-by: Andreas Schneider <asn@cryptomilk.org> Reviewed-by: Jakub Jelen <jjelen@redhat.com>
Этот коммит содержится в:
родитель
5ffc595d0d
Коммит
c4348c7b3c
@ -1150,13 +1150,15 @@ void ssh_channel_do_free(ssh_channel channel)
|
||||
ssh_list_remove(session->channels, it);
|
||||
}
|
||||
|
||||
ssh_buffer_free(channel->stdout_buffer);
|
||||
ssh_buffer_free(channel->stderr_buffer);
|
||||
SSH_BUFFER_FREE(channel->stdout_buffer);
|
||||
SSH_BUFFER_FREE(channel->stderr_buffer);
|
||||
|
||||
if (channel->callbacks != NULL) {
|
||||
ssh_list_free(channel->callbacks);
|
||||
channel->callbacks = NULL;
|
||||
}
|
||||
|
||||
channel->session = NULL;
|
||||
SAFE_FREE(channel);
|
||||
}
|
||||
|
||||
@ -1194,7 +1196,7 @@ int ssh_channel_send_eof(ssh_channel channel)
|
||||
int rc = SSH_ERROR;
|
||||
int err;
|
||||
|
||||
if(channel == NULL) {
|
||||
if (channel == NULL || channel->session == NULL) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -308,6 +308,7 @@ void sftp_free(sftp_session sftp)
|
||||
return;
|
||||
}
|
||||
|
||||
if (sftp->channel != NULL) {
|
||||
ssh_channel_send_eof(sftp->channel);
|
||||
ptr = sftp->queue;
|
||||
while(ptr) {
|
||||
@ -319,6 +320,8 @@ void sftp_free(sftp_session sftp)
|
||||
}
|
||||
|
||||
ssh_channel_free(sftp->channel);
|
||||
sftp->channel = NULL;
|
||||
}
|
||||
|
||||
SAFE_FREE(sftp->handles);
|
||||
SSH_BUFFER_FREE(sftp->read_packet->payload);
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user