diff --git a/wolfcrypt/src/evp.c b/wolfcrypt/src/evp.c index 84a4c369e..d86275084 100644 --- a/wolfcrypt/src/evp.c +++ b/wolfcrypt/src/evp.c @@ -3420,6 +3420,7 @@ WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKEY_new_CMAC_key(WOLFSSL_ENGINE* e, ret = wolfSSL_CMAC_Init(ctx, priv, len, cipher, e); if (ret == WOLFSSL_FAILURE) { + wolfSSL_CMAC_CTX_free(ctx); WOLFSSL_LEAVE("wolfSSL_EVP_PKEY_new_CMAC_key", 0); return NULL; } @@ -3441,6 +3442,9 @@ WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKEY_new_CMAC_key(WOLFSSL_ENGINE* e, pkey->cmacCtx = ctx; } } + else { + wolfSSL_CMAC_CTX_free(ctx); + } WOLFSSL_LEAVE("wolfSSL_EVP_PKEY_new_CMAC_key", 0); return pkey;