Skip to content

Commit 8352818

Browse files
committed
Fix test stack usage
1 parent 9fdd663 commit 8352818

1 file changed

Lines changed: 57 additions & 15 deletions

File tree

wolfcrypt/test/test.c

Lines changed: 57 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -65589,14 +65589,21 @@ static int myCryptoDevCb(int devIdArg, wc_CryptoInfo* info, void* ctx)
6558965589
{
6559065590
ecc_key* eccObj = (ecc_key*)info->setkey.obj;
6559165591
ecc_key* eccTmp = (ecc_key*)info->setkey.key;
65592-
byte buf[ECC_BUFSIZE];
65593-
word32 bufSz = sizeof(buf);
65592+
word32 bufSz = ECC_BUFSIZE;
6559465593
int curveId;
65594+
WC_DECLARE_VAR(buf, byte, ECC_BUFSIZE, NULL);
65595+
WC_ALLOC_VAR(buf, byte, ECC_BUFSIZE, NULL);
65596+
if (!WC_VAR_OK(buf)) {
65597+
ret = MEMORY_E;
65598+
break;
65599+
}
6559565600

6559665601
/* Export public key from temp to X9.63 format */
6559765602
ret = wc_ecc_export_x963(eccTmp, buf, &bufSz);
65598-
if (ret != 0)
65603+
if (ret != 0) {
65604+
WC_FREE_VAR(buf, NULL);
6559965605
break;
65606+
}
6560065607

6560165608
curveId = wc_ecc_get_curve_id(eccTmp->idx);
6560265609

@@ -65605,31 +65612,47 @@ static int myCryptoDevCb(int devIdArg, wc_CryptoInfo* info, void* ctx)
6560565612
ret = wc_ecc_import_x963_ex2(buf, bufSz, eccObj,
6560665613
curveId, 0);
6560765614
eccObj->devId = devIdArg;
65615+
65616+
WC_FREE_VAR(buf, NULL);
6560865617
break;
6560965618
}
6561065619
case WC_SETKEY_ECC_PRIV:
6561165620
{
6561265621
ecc_key* eccObj = (ecc_key*)info->setkey.obj;
6561365622
ecc_key* eccTmp = (ecc_key*)info->setkey.key;
65614-
byte pubBuf[ECC_BUFSIZE];
65615-
byte privBuf[MAX_ECC_BYTES];
65616-
word32 pubSz = sizeof(pubBuf);
65617-
word32 privSz = sizeof(privBuf);
65623+
word32 pubSz = ECC_BUFSIZE;
65624+
word32 privSz = MAX_ECC_BYTES;
6561865625
byte* pubPtr = NULL;
6561965626
int curveId;
65627+
WC_DECLARE_VAR(pubBuf, byte, ECC_BUFSIZE, NULL);
65628+
WC_DECLARE_VAR(privBuf, byte, MAX_ECC_BYTES, NULL);
65629+
WC_ALLOC_VAR(pubBuf, byte, ECC_BUFSIZE, NULL);
65630+
WC_ALLOC_VAR(privBuf, byte, MAX_ECC_BYTES, NULL);
65631+
if (!WC_VAR_OK(pubBuf) || !WC_VAR_OK(privBuf)) {
65632+
WC_FREE_VAR(pubBuf, NULL);
65633+
WC_FREE_VAR(privBuf, NULL);
65634+
ret = MEMORY_E;
65635+
break;
65636+
}
6562065637

6562165638
/* Export public key from temp (if available) */
6562265639
if (eccTmp->type != ECC_PRIVATEKEY_ONLY) {
6562365640
ret = wc_ecc_export_x963(eccTmp, pubBuf, &pubSz);
65624-
if (ret != 0)
65641+
if (ret != 0) {
65642+
WC_FREE_VAR(pubBuf, NULL);
65643+
WC_FREE_VAR(privBuf, NULL);
6562565644
break;
65645+
}
6562665646
pubPtr = pubBuf;
6562765647
}
6562865648

6562965649
ret = wc_ecc_export_private_only(eccTmp, privBuf,
6563065650
&privSz);
65631-
if (ret != 0)
65651+
if (ret != 0) {
65652+
WC_FREE_VAR(pubBuf, NULL);
65653+
WC_FREE_VAR(privBuf, NULL);
6563265654
break;
65655+
}
6563365656

6563465657
curveId = wc_ecc_get_curve_id(eccTmp->idx);
6563565658

@@ -65639,6 +65662,9 @@ static int myCryptoDevCb(int devIdArg, wc_CryptoInfo* info, void* ctx)
6563965662
pubPtr, (pubPtr != NULL) ? pubSz : 0,
6564065663
eccObj, curveId);
6564165664
eccObj->devId = devIdArg;
65665+
65666+
WC_FREE_VAR(pubBuf, NULL);
65667+
WC_FREE_VAR(privBuf, NULL);
6564265668
break;
6564365669
}
6564465670
#endif /* HAVE_ECC && HAVE_ECC_KEY_EXPORT && HAVE_ECC_KEY_IMPORT */
@@ -65713,26 +65739,40 @@ static int myCryptoDevCb(int devIdArg, wc_CryptoInfo* info, void* ctx)
6571365739
{
6571465740
ecc_key* src = (ecc_key*)info->export_key.obj;
6571565741
ecc_key* dst = (ecc_key*)info->export_key.out;
65716-
byte pubBuf[ECC_BUFSIZE];
65717-
byte privBuf[MAX_ECC_BYTES];
65718-
word32 pubSz = sizeof(pubBuf);
65719-
word32 privSz = sizeof(privBuf);
65742+
word32 pubSz = ECC_BUFSIZE;
65743+
word32 privSz = MAX_ECC_BYTES;
6572065744
byte* pubPtr = NULL;
6572165745
int curveId;
65746+
WC_DECLARE_VAR(pubBuf, byte, ECC_BUFSIZE, NULL);
65747+
WC_DECLARE_VAR(privBuf, byte, MAX_ECC_BYTES, NULL);
65748+
WC_ALLOC_VAR(pubBuf, byte, ECC_BUFSIZE, NULL);
65749+
WC_ALLOC_VAR(privBuf, byte, MAX_ECC_BYTES, NULL);
65750+
if (!WC_VAR_OK(pubBuf) || !WC_VAR_OK(privBuf)) {
65751+
WC_FREE_VAR(pubBuf, NULL);
65752+
WC_FREE_VAR(privBuf, NULL);
65753+
ret = MEMORY_E;
65754+
break;
65755+
}
6572265756

6572365757
/* Export public key if available */
6572465758
if (src->type != ECC_PRIVATEKEY_ONLY) {
6572565759
ret = wc_ecc_export_x963(src, pubBuf, &pubSz);
65726-
if (ret != 0)
65760+
if (ret != 0) {
65761+
WC_FREE_VAR(pubBuf, NULL);
65762+
WC_FREE_VAR(privBuf, NULL);
6572765763
break;
65764+
}
6572865765
pubPtr = pubBuf;
6572965766
}
6573065767

6573165768
/* Export private key if available */
6573265769
if (src->type != ECC_PUBLICKEY) {
6573365770
ret = wc_ecc_export_private_only(src, privBuf, &privSz);
65734-
if (ret != 0)
65771+
if (ret != 0) {
65772+
WC_FREE_VAR(pubBuf, NULL);
65773+
WC_FREE_VAR(privBuf, NULL);
6573565774
break;
65775+
}
6573665776

6573765777
curveId = wc_ecc_get_curve_id(src->idx);
6573865778
ret = wc_ecc_import_private_key_ex(privBuf, privSz,
@@ -65745,6 +65785,8 @@ static int myCryptoDevCb(int devIdArg, wc_CryptoInfo* info, void* ctx)
6574565785
ret = wc_ecc_import_x963_ex2(pubBuf, pubSz, dst,
6574665786
curveId, 0);
6574765787
}
65788+
WC_FREE_VAR(pubBuf, NULL);
65789+
WC_FREE_VAR(privBuf, NULL);
6574865790
break;
6574965791
}
6575065792
#endif /* HAVE_ECC && HAVE_ECC_KEY_EXPORT && HAVE_ECC_KEY_IMPORT */

0 commit comments

Comments
 (0)