src/tls.c: in TLSX_KeyShare_GenPqcKeyClient(), add smallstack coverage to !WOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ code paths.

This commit is contained in:
Daniel Pouzzner
2025-07-23 12:02:07 -05:00
parent 5360738351
commit 8d7009e9de

View File

@@ -8537,7 +8537,11 @@ static int TLSX_KeyShare_GenPqcKeyClient(WOLFSSL *ssl, KeyShareEntry* kse)
int ret = 0; int ret = 0;
int type = 0; int type = 0;
#ifndef WOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ #ifndef WOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ
KyberKey kem[1]; #ifdef WOLFSSL_SMALL_STACK
KyberKey *kem = NULL;
#else
KyberKey kem[1];
#endif
byte* privKey = NULL; byte* privKey = NULL;
word32 privSz = 0; word32 privSz = 0;
#else #else
@@ -8559,6 +8563,18 @@ static int TLSX_KeyShare_GenPqcKeyClient(WOLFSSL *ssl, KeyShareEntry* kse)
} }
#ifndef WOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ #ifndef WOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ
#ifdef WOLFSSL_SMALL_STACK
if (ret == 0) {
kem = (KyberKey *)XMALLOC(sizeof(*kem), ssl->heap,
DYNAMIC_TYPE_PRIVATE_KEY);
if (kem == NULL) {
WOLFSSL_MSG("KEM memory allocation failure");
ret = MEMORY_ERROR;
}
}
#endif /* WOLFSSL_SMALL_STACK */
if (ret == 0) { if (ret == 0) {
ret = wc_KyberKey_Init(type, kem, ssl->heap, ssl->devId); ret = wc_KyberKey_Init(type, kem, ssl->heap, ssl->devId);
if (ret != 0) { if (ret != 0) {
@@ -8638,6 +8654,9 @@ static int TLSX_KeyShare_GenPqcKeyClient(WOLFSSL *ssl, KeyShareEntry* kse)
XFREE(kse->pubKey, ssl->heap, DYNAMIC_TYPE_PUBLIC_KEY); XFREE(kse->pubKey, ssl->heap, DYNAMIC_TYPE_PUBLIC_KEY);
kse->pubKey = NULL; kse->pubKey = NULL;
#ifndef WOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ #ifndef WOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ
#ifdef WOLFSSL_SMALL_STACK
XFREE(kem, ssl->heap, DYNAMIC_TYPE_PRIVATE_KEY);
#endif
if (privKey) { if (privKey) {
ForceZero(privKey, privSz); ForceZero(privKey, privSz);
XFREE(privKey, ssl->heap, DYNAMIC_TYPE_PRIVATE_KEY); XFREE(privKey, ssl->heap, DYNAMIC_TYPE_PRIVATE_KEY);
@@ -8658,6 +8677,11 @@ static int TLSX_KeyShare_GenPqcKeyClient(WOLFSSL *ssl, KeyShareEntry* kse)
#endif #endif
} }
#if !defined(WOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ) && \
defined(WOLFSSL_SMALL_STACK)
XFREE(kem, ssl->heap, DYNAMIC_TYPE_PRIVATE_KEY);
#endif
return ret; return ret;
} }