From: xuraoqing Date: Thu, 15 Dec 2022 09:02:59 +0000 (+0800) Subject: fix memory leak when process client ecdh key exchage X-Git-Tag: 3.8.0~20^2 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=6531dafba1175f6101296957deb95891ed05e57b;p=thirdparty%2Fgnutls.git fix memory leak when process client ecdh key exchage Signed-off-by: xuraoqing --- diff --git a/lib/auth/ecdhe.c b/lib/auth/ecdhe.c index 9f53b1b053..a045d306dc 100644 --- a/lib/auth/ecdhe.c +++ b/lib/auth/ecdhe.c @@ -193,8 +193,10 @@ int _gnutls_proc_ecdh_common_client_kx(gnutls_session_t session, return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); } - if (data_size != 0) - return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + if (data_size != 0) { + ret = gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + goto cleanup; + } /* generate pre-shared key */ ret = calc_ecdh_key(session, psk_key, ecurve); @@ -202,8 +204,10 @@ int _gnutls_proc_ecdh_common_client_kx(gnutls_session_t session, gnutls_assert(); goto cleanup; } - cleanup: + _gnutls_mpi_release(&session->key.proto.tls12.ecdh.x); + _gnutls_mpi_release(&session->key.proto.tls12.ecdh.y); + _gnutls_free_datum(&session->key.proto.tls12.ecdh.raw); gnutls_pk_params_clear(&session->key.proto.tls12.ecdh.params); return ret; }