]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
fix memory leak when process client ecdh key exchage
authorxuraoqing <xuraoqing@huawei.com>
Thu, 15 Dec 2022 09:02:59 +0000 (17:02 +0800)
committerxuraoqing <xuraoqing@huawei.com>
Mon, 19 Dec 2022 08:09:55 +0000 (16:09 +0800)
Signed-off-by: xuraoqing <xuraoqing@huawei.com>
lib/auth/ecdhe.c

index 9f53b1b0531a0714a62c855c926e82980c155706..a045d306dcef0d423be669039f8b09ec844bf051 100644 (file)
@@ -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;
 }