aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrofl0r <retnyg@gmx.net>2011-08-29 21:07:20 +0200
committerAndreas Schneider <asn@cryptomilk.org>2011-08-29 21:47:01 +0200
commit66188f1af84852b9d9fc09acf26454c4cfacefef (patch)
tree6b7e90b46875e6898ab73d6c3d6f6ef67846acb7
parentd1df255df46b0b59ce5abfa1b2a4b971ebb4fb64 (diff)
downloadlibssh-66188f1af84852b9d9fc09acf26454c4cfacefef.tar.gz
libssh-66188f1af84852b9d9fc09acf26454c4cfacefef.tar.xz
libssh-66188f1af84852b9d9fc09acf26454c4cfacefef.zip
channels: Fix possible infinite loop in channel_read().
-rw-r--r--src/channels.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/channels.c b/src/channels.c
index 01f7fdf3..4fdf6d4d 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);