OpenSSL: Fix a memory leak on hpke_labeled_expand() error path

Fixes: 786ea402bc ("HPKE base mode with single-shot API")
Signed-off-by: Chien Wong <m@xv97.com>
This commit is contained in:
Chien Wong 2024-03-05 22:20:41 +08:00 committed by Jouni Malinen
parent b35b1036fe
commit a438e52933

View file

@ -4881,7 +4881,7 @@ hpke_labeled_expand(struct hpke_context *ctx, bool kem, const u8 *prk,
#if OPENSSL_VERSION_NUMBER >= 0x30000000L #if OPENSSL_VERSION_NUMBER >= 0x30000000L
hmac = EVP_MAC_fetch(NULL, "HMAC", NULL); hmac = EVP_MAC_fetch(NULL, "HMAC", NULL);
if (!hmac) if (!hmac)
return -1; goto fail;
params[0] = OSSL_PARAM_construct_utf8_string( params[0] = OSSL_PARAM_construct_utf8_string(
"digest", "digest",
@ -4890,7 +4890,7 @@ hpke_labeled_expand(struct hpke_context *ctx, bool kem, const u8 *prk,
#else /* OpenSSL version >= 3.0 */ #else /* OpenSSL version >= 3.0 */
hctx = HMAC_CTX_new(); hctx = HMAC_CTX_new();
if (!hctx) if (!hctx)
return -1; goto fail;
#endif /* OpenSSL version >= 3.0 */ #endif /* OpenSSL version >= 3.0 */
while (left > 0) { while (left > 0) {
@ -4899,7 +4899,7 @@ hpke_labeled_expand(struct hpke_context *ctx, bool kem, const u8 *prk,
EVP_MAC_CTX_free(hctx); EVP_MAC_CTX_free(hctx);
hctx = EVP_MAC_CTX_new(hmac); hctx = EVP_MAC_CTX_new(hmac);
if (!hctx) if (!hctx)
return -1; goto fail;
if (EVP_MAC_init(hctx, prk, mdlen, params) != 1) if (EVP_MAC_init(hctx, prk, mdlen, params) != 1)
goto fail; goto fail;