From 66188f1af84852b9d9fc09acf26454c4cfacefef Mon Sep 17 00:00:00 2001 From: rofl0r Date: Mon, 29 Aug 2011 21:07:20 +0200 Subject: channels: Fix possible infinite loop in channel_read(). --- src/channels.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/channels.c b/src/channels.c index 01f7fdf..4fdf6d4 100644 --- a/src/channels.c +++ b/src/channels.c @@ -2439,6 +2439,7 @@ int ssh_channel_read(ssh_channel channel, void *dest, uint32_t count, int is_std ssh_session session; ssh_buffer stdbuf; uint32_t len; + int rc; if(channel == NULL) { return SSH_ERROR; @@ -2497,7 +2498,10 @@ int ssh_channel_read(ssh_channel channel, void *dest, uint32_t count, int is_std break; } - ssh_handle_packets(session, -2); + rc = ssh_handle_packets(session, -2); + if (rc != SSH_OK) { + return rc; + } } len = buffer_get_rest_len(stdbuf); -- cgit