From 39a5af864963628e4a35e9431fc497381ef87983 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Sun, 25 Aug 2024 20:00:16 +0200 Subject: [PATCH] Free hd_context if error. Signed-off-by: Pol Henarejos --- src/hsm/cmd_cipher_sym.c | 1 + src/hsm/cmd_signature.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/hsm/cmd_cipher_sym.c b/src/hsm/cmd_cipher_sym.c index 1c85c92..bcd714f 100644 --- a/src/hsm/cmd_cipher_sym.c +++ b/src/hsm/cmd_cipher_sym.c @@ -664,6 +664,7 @@ int cmd_cipher_sym() { secret[64] = { 0 }; mbedtls_aes_init(&ctx); if (hd_keytype != 0x3) { + mbedtls_ecdsa_free(&hd_context); return SW_INCORRECT_PARAMS(); } key_size = 32; diff --git a/src/hsm/cmd_signature.c b/src/hsm/cmd_signature.c index 0ba2dc7..fc9bf40 100644 --- a/src/hsm/cmd_signature.c +++ b/src/hsm/cmd_signature.c @@ -284,11 +284,13 @@ int cmd_signature() { } else if (p2 == ALGO_HD) { size_t olen = 0; - uint8_t buf[MBEDTLS_ECDSA_MAX_LEN]; + uint8_t buf[MBEDTLS_ECDSA_MAX_LEN] = {0}; if (hd_context.grp.id == MBEDTLS_ECP_DP_NONE) { + mbedtls_ecdsa_free(&hd_context); return SW_CONDITIONS_NOT_SATISFIED(); } if (hd_keytype != 0x1 && hd_keytype != 0x2) { + mbedtls_ecdsa_free(&hd_context); return SW_INCORRECT_PARAMS(); } md = MBEDTLS_MD_SHA256;