From b168bfaa6a1de0e5bd68146c8170992e045fe580 Mon Sep 17 00:00:00 2001 From: Juliusz Sosinowicz Date: Mon, 16 Mar 2026 15:44:09 +0100 Subject: [PATCH] Check wc_ecc_init_ex return value in wc_GetKeyOID F-749 --- wolfcrypt/src/asn.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/wolfcrypt/src/asn.c b/wolfcrypt/src/asn.c index fce0dff78d..2ee9344f04 100644 --- a/wolfcrypt/src/asn.c +++ b/wolfcrypt/src/asn.c @@ -9510,22 +9510,23 @@ int wc_GetKeyOID(byte* key, word32 keySz, const byte** curveOID, word32* oidSz, return MEMORY_E; tmpIdx = 0; - wc_ecc_init_ex(ecc, heap, INVALID_DEVID); - if (wc_EccPrivateKeyDecode(key, &tmpIdx, ecc, keySz) == 0) { - *algoID = ECDSAk; + if (wc_ecc_init_ex(ecc, heap, INVALID_DEVID) == 0) { + if (wc_EccPrivateKeyDecode(key, &tmpIdx, ecc, keySz) == 0) { + *algoID = ECDSAk; - /* now find oid */ - if (wc_ecc_get_oid(ecc->dp->oidSum, curveOID, oidSz) < 0) { - WOLFSSL_MSG("Error getting ECC curve OID"); - wc_ecc_free(ecc); - XFREE(ecc, heap, DYNAMIC_TYPE_TMP_BUFFER); - return BAD_FUNC_ARG; + /* now find oid */ + if (wc_ecc_get_oid(ecc->dp->oidSum, curveOID, oidSz) < 0) { + WOLFSSL_MSG("Error getting ECC curve OID"); + wc_ecc_free(ecc); + XFREE(ecc, heap, DYNAMIC_TYPE_TMP_BUFFER); + return BAD_FUNC_ARG; + } } + else { + WOLFSSL_MSG("Not ECC DER key either"); + } + wc_ecc_free(ecc); } - else { - WOLFSSL_MSG("Not ECC DER key either"); - } - wc_ecc_free(ecc); XFREE(ecc, heap, DYNAMIC_TYPE_TMP_BUFFER); } #endif /* HAVE_ECC && !NO_ASN_CRYPT */