aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2018-09-25 15:23:46 +0200
committerAndreas Schneider <asn@cryptomilk.org>2018-10-19 22:01:28 +0200
commitc5c219f2d36a15bebc23365741ce3f036ba9fb47 (patch)
tree8cfc5ca56e589b491c813173b35c80ce234bd58d
parent89b3c0dd8901a41bb5d60ff868847d039e25f509 (diff)
downloadlibssh-c5c219f2d36a15bebc23365741ce3f036ba9fb47.tar.gz
libssh-c5c219f2d36a15bebc23365741ce3f036ba9fb47.tar.xz
libssh-c5c219f2d36a15bebc23365741ce3f036ba9fb47.zip
channels: Check return of ssh_buffer_unpack()
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
-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,