From 6d4b1bbb4594dc335972bad37aadc478199c36ee Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 19 Mar 2010 14:58:05 +0100 Subject: [PATCH] fix NULL dereference when window adjusting a non-existing channel Suyog Jadhav pointed out that when receiving a window adjust to a channel not found, the code would reference a NULL pointer. Now it will instead output a message about that fact. --- src/packet.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/packet.c b/src/packet.c index 0215978..c4267c9 100644 --- a/src/packet.c +++ b/src/packet.c @@ -861,12 +861,16 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data, if (session->packAdd_channel && bytestoadd) { session->packAdd_channel->local.window_size += bytestoadd; } - _libssh2_debug(session, LIBSSH2_TRACE_CONN, - "Window adjust received for channel %lu/%lu, adding %lu bytes, new window_size=%lu", - session->packAdd_channel->local.id, - session->packAdd_channel->remote.id, - bytestoadd, - session->packAdd_channel->local.window_size); + if(session->packAdd_channel) + _libssh2_debug(session, LIBSSH2_TRACE_CONN, + "Window adjust received for channel %lu/%lu, adding %lu bytes, new window_size=%lu", + session->packAdd_channel->local.id, + session->packAdd_channel->remote.id, + bytestoadd, + session->packAdd_channel->local.window_size); + else + _libssh2_debug(session, LIBSSH2_TRACE_CONN, + "Window adjust for non-existing channel!"); LIBSSH2_FREE(session, data); session->packAdd_state = libssh2_NB_state_idle;