@@ -10228,23 +10228,31 @@ static int _ecc_pairwise_consistency_test(ecc_key* key, WC_RNG* rng)
1022810228 }
1022910229
1023010230 if (!err && (flags & WC_ECC_FLAG_DEC_SIGN)) {
10231+ #ifndef WOLFSSL_SMALL_STACK
10232+ byte sig[MAX_ECC_BYTES + WC_SHA256_DIGEST_SIZE];
10233+ #else
1023110234 byte* sig;
10235+ #endif
1023210236 byte* digest;
1023310237 word32 sigLen, digestLen;
1023410238 int dynRng = 0, res = 0;
1023510239
1023610240 sigLen = (word32)wc_ecc_sig_size(key);
1023710241 digestLen = WC_SHA256_DIGEST_SIZE;
10238- sig = (byte*)XMALLOC(sigLen + digestLen, NULL, DYNAMIC_TYPE_ECC);
10242+ #ifdef WOLFSSL_SMALL_STACK
10243+ sig = (byte*)XMALLOC(sigLen + digestLen, key->heap, DYNAMIC_TYPE_ECC);
1023910244 if (sig == NULL)
1024010245 return MEMORY_E;
10246+ #endif
1024110247 digest = sig + sigLen;
1024210248
1024310249 if (rng == NULL) {
1024410250 dynRng = 1;
10245- rng = wc_rng_new(NULL, 0, NULL );
10251+ rng = wc_rng_new(NULL, 0, key->heap );
1024610252 if (rng == NULL) {
10247- XFREE(sig, NULL, DYNAMIC_TYPE_ECC);
10253+ #ifdef WOLFSSL_SMALL_STACK
10254+ XFREE(sig, key->heap, DYNAMIC_TYPE_ECC);
10255+ #endif
1024810256 return MEMORY_E;
1024910257 }
1025010258 }
@@ -10265,7 +10273,9 @@ static int _ecc_pairwise_consistency_test(ecc_key* key, WC_RNG* rng)
1026510273 wc_rng_free(rng);
1026610274 }
1026710275 ForceZero(sig, sigLen + digestLen);
10268- XFREE(sig, NULL, DYNAMIC_TYPE_ECC);
10276+ #ifdef WOLFSSL_SMALL_STACK
10277+ XFREE(sig, key->heap, DYNAMIC_TYPE_ECC);
10278+ #endif
1026910279 }
1027010280 (void)rng;
1027110281
0 commit comments