@@ -18581,55 +18581,71 @@ static int SetStaticEphemeralKey(WOLFSSL_CTX* ctx,
1858118581 #ifdef HAVE_ECC
1858218582 if (keyAlgo == WC_PK_TYPE_NONE) {
1858318583 word32 idx = 0;
18584- ecc_key eccKey;
18585- ret = wc_ecc_init_ex(&eccKey, heap, INVALID_DEVID);
18584+ WC_DECLARE_VAR(eccKey, ecc_key, 1, heap);
18585+ WC_ALLOC_VAR_EX(eccKey, ecc_key, 1, heap, DYNAMIC_TYPE_ECC,
18586+ ret = MEMORY_E);
18587+ if (ret == 0)
18588+ ret = wc_ecc_init_ex(eccKey, heap, INVALID_DEVID);
1858618589 if (ret == 0) {
18587- ret = wc_EccPrivateKeyDecode(keyBuf, &idx, & eccKey, keySz);
18590+ ret = wc_EccPrivateKeyDecode(keyBuf, &idx, eccKey, keySz);
1858818591 if (ret == 0)
1858918592 keyAlgo = WC_PK_TYPE_ECDH;
18590- wc_ecc_free(& eccKey);
18593+ wc_ecc_free(eccKey);
1859118594 }
18595+ WC_FREE_VAR_EX(eccKey, heap, DYNAMIC_TYPE_ECC);
1859218596 }
1859318597 #endif
1859418598 #if !defined(NO_DH) && defined(WOLFSSL_DH_EXTRA)
1859518599 if (keyAlgo == WC_PK_TYPE_NONE) {
1859618600 word32 idx = 0;
18597- DhKey dhKey;
18598- ret = wc_InitDhKey_ex(&dhKey, heap, INVALID_DEVID);
18601+ WC_DECLARE_VAR(dhKey, DhKey, 1, heap);
18602+ WC_ALLOC_VAR_EX(dhKey, DhKey, 1, heap, DYNAMIC_TYPE_DH,
18603+ ret = MEMORY_E);
18604+ if (ret == 0)
18605+ ret = wc_InitDhKey_ex(dhKey, heap, INVALID_DEVID);
1859918606 if (ret == 0) {
18600- ret = wc_DhKeyDecode(keyBuf, &idx, & dhKey, keySz);
18607+ ret = wc_DhKeyDecode(keyBuf, &idx, dhKey, keySz);
1860118608 if (ret == 0)
1860218609 keyAlgo = WC_PK_TYPE_DH;
18603- wc_FreeDhKey(& dhKey);
18610+ wc_FreeDhKey(dhKey);
1860418611 }
18612+ WC_FREE_VAR_EX(dhKey, heap, DYNAMIC_TYPE_DH);
1860518613 }
1860618614 #endif
1860718615 #ifdef HAVE_CURVE25519
1860818616 if (keyAlgo == WC_PK_TYPE_NONE) {
1860918617 word32 idx = 0;
18610- curve25519_key x25519Key;
18611- ret = wc_curve25519_init_ex(&x25519Key, heap, INVALID_DEVID);
18618+ WC_DECLARE_VAR(x25519Key, curve25519_key, 1, heap);
18619+ WC_ALLOC_VAR_EX(x25519Key, curve25519_key, 1, heap,
18620+ DYNAMIC_TYPE_CURVE25519, ret = MEMORY_E);
18621+ if (ret == 0)
18622+ ret = wc_curve25519_init_ex(x25519Key, heap, INVALID_DEVID);
1861218623 if (ret == 0) {
1861318624 ret = wc_Curve25519PrivateKeyDecode(keyBuf, &idx,
18614- & x25519Key, keySz);
18625+ x25519Key, keySz);
1861518626 if (ret == 0)
1861618627 keyAlgo = WC_PK_TYPE_CURVE25519;
18617- wc_curve25519_free(& x25519Key);
18628+ wc_curve25519_free(x25519Key);
1861818629 }
18630+ WC_FREE_VAR_EX(x25519Key, heap, DYNAMIC_TYPE_CURVE25519);
1861918631 }
1862018632 #endif
1862118633 #ifdef HAVE_CURVE448
1862218634 if (keyAlgo == WC_PK_TYPE_NONE) {
1862318635 word32 idx = 0;
18624- curve448_key x448Key;
18625- ret = wc_curve448_init(&x448Key);
18636+ WC_DECLARE_VAR(x448Key, curve448_key, 1, heap);
18637+ WC_ALLOC_VAR_EX(x448Key, curve448_key, 1, heap,
18638+ DYNAMIC_TYPE_CURVE448, ret = MEMORY_E);
18639+ if (ret == 0)
18640+ ret = wc_curve448_init(x448Key);
1862618641 if (ret == 0) {
18627- ret = wc_Curve448PrivateKeyDecode(keyBuf, &idx, & x448Key,
18642+ ret = wc_Curve448PrivateKeyDecode(keyBuf, &idx, x448Key,
1862818643 keySz);
1862918644 if (ret == 0)
1863018645 keyAlgo = WC_PK_TYPE_CURVE448;
18631- wc_curve448_free(& x448Key);
18646+ wc_curve448_free(x448Key);
1863218647 }
18648+ WC_FREE_VAR_EX(x448Key, heap, DYNAMIC_TYPE_CURVE448);
1863318649 }
1863418650 #endif
1863518651
0 commit comments