From 48e7b098f86207f8596651b5ba8242a3b834a868 Mon Sep 17 00:00:00 2001 From: debevv Date: Tue, 6 Jun 2017 09:28:58 +0200 Subject: [PATCH] wrapper: Fix possible crash in ssh_handle_key_exchange() If ssh_handle_key_exchange() fails, when ssh_free() is called cipher->ctx is NULL. Signed-off-by: debevv --- src/wrapper.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/wrapper.c b/src/wrapper.c index af166dae..877b807b 100644 --- a/src/wrapper.c +++ b/src/wrapper.c @@ -120,12 +120,14 @@ void ssh_cipher_clear(struct ssh_cipher_struct *cipher){ SAFE_FREE(cipher->key); } #endif - if (cipher->cleanup != NULL){ - cipher->cleanup(cipher); - } + if (cipher->ctx != NULL) { + if (cipher->cleanup != NULL) { + cipher->cleanup(cipher); + } #ifdef HAVE_LIBCRYPTO - EVP_CIPHER_CTX_free(cipher->ctx); + EVP_CIPHER_CTX_free(cipher->ctx); #endif + } } static void cipher_free(struct ssh_cipher_struct *cipher) {