aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnderson Toshiyuki Sasaki <ansasaki@redhat.com>2018-09-19 14:30:33 +0200
committerAndreas Schneider <asn@cryptomilk.org>2018-10-09 11:45:58 +0200
commit3837a0547f08b160749fed7496316a62d6c11dea (patch)
tree40cc93b44ed2e1420dfd2a4fc4c9b9f971af1f66
parent7985acb76842ebf27e32e4afddfef55555209e8e (diff)
downloadlibssh-3837a0547f08b160749fed7496316a62d6c11dea.tar.gz
libssh-3837a0547f08b160749fed7496316a62d6c11dea.tar.xz
libssh-3837a0547f08b160749fed7496316a62d6c11dea.zip
CVE-2018-10933: Check channel state when OPEN_CONFIRMATION arrives
When a SSH2_MSG_OPEN_CONFIRMATION arrives, the channel state is checked to be in SSH_CHANNEL_STATE_OPENING. Fixes T101 Signed-off-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
-rw-r--r--src/channels.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/channels.c b/src/channels.c
index 30c31468..d5d36af5 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -170,6 +170,15 @@ SSH_PACKET_CALLBACK(ssh_packet_channel_open_conf){
"Received a CHANNEL_OPEN_CONFIRMATION for channel %d:%d",
channel->local_channel,
channel->remote_channel);
+
+ if (channel->state != SSH_CHANNEL_STATE_OPENING) {
+ SSH_LOG(SSH_LOG_RARE,
+ "SSH2_MSG_CHANNEL_OPEN_CONFIRMATION received in incorrect "
+ "channel state %d",
+ channel->state);
+ goto error;
+ }
+
SSH_LOG(SSH_LOG_PROTOCOL,
"Remote window : %lu, maxpacket : %lu",
(long unsigned int) channel->remote_window,