aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2018-09-25 15:23:46 +0200
committerAndreas Schneider <asn@cryptomilk.org>2018-10-24 09:48:35 +0200
commit253bda4bac7a062f2ab1a85d506d6eda70ae7cd6 (patch)
tree8cfc5ca56e589b491c813173b35c80ce234bd58d /src
parent480915c07d4c444cfa560af36f76344d366246c2 (diff)
downloadlibssh-253bda4bac7a062f2ab1a85d506d6eda70ae7cd6.tar.gz
libssh-253bda4bac7a062f2ab1a85d506d6eda70ae7cd6.tar.xz
libssh-253bda4bac7a062f2ab1a85d506d6eda70ae7cd6.zip
channels: Check return of ssh_buffer_unpack()
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src')
-rw-r--r--src/channels.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/channels.c b/src/channels.c
index 0e61e5cd..14da14d9 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -683,6 +683,10 @@ SSH_PACKET_CALLBACK(channel_rcv_request) {
if (strcmp(request,"exit-status") == 0) {
SAFE_FREE(request);
rc = ssh_buffer_unpack(packet, "d", &channel->exit_status);
+ if (rc != SSH_OK) {
+ SSH_LOG(SSH_LOG_PACKET, "Invalid exit-status packet");
+ return SSH_PACKET_USED;
+ }
SSH_LOG(SSH_LOG_PACKET, "received exit-status %d", channel->exit_status);
ssh_callbacks_execute_list(channel->callbacks,