From 69d12901042f4c55f89d26df7ea10a83c60c14f1 Mon Sep 17 00:00:00 2001 From: pfelt Date: Wed, 26 Aug 2009 03:50:40 +0000 Subject: [PATCH] -- fix: a potential DOS where connio would segfault on the following command sequence (pop connect) stls \n quit \n due to an attempt to free 0x0 --- src/libs/connio/connio.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/libs/connio/connio.c b/src/libs/connio/connio.c index b8fe5d9..2d35a9a 100644 --- a/src/libs/connio/connio.c +++ b/src/libs/connio/connio.c @@ -447,11 +447,15 @@ ConnNegotiate(Connection *conn, bongo_ssl_context *context) CONN_TRACE_EVENT(c, CONN_TRACE_EVENT_SSL_CONNECT); return(TRUE); } - gnutls_deinit(c->ssl.context); - gnutls_certificate_free_credentials(c->ssl.credentials); + if (c->ssl.context) { + gnutls_deinit(c->ssl.context); + c->ssl.context = NULL; + } + if (c->ssl.credentials) { + gnutls_certificate_free_credentials(c->ssl.credentials); + c->ssl.credentials = NULL; + } c->ssl.enable = FALSE; - c->ssl.context = NULL; - c->ssl.credentials = NULL; } return(FALSE);