Skip to content

Commit cf9f852

Browse files
committed
validate preconditions at public API boundary
1 parent 7b53303 commit cf9f852

6 files changed

Lines changed: 20 additions & 1 deletion

File tree

wolfcrypt/src/cmac.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@
7171
*/
7272
int wc_CMAC_Grow(Cmac* cmac, const byte* in, int inSz)
7373
{
74+
if ((cmac == NULL) || (in == NULL && inSz != 0))
75+
return BAD_FUNC_ARG;
7476
return _wc_Hash_Grow(&cmac->msg, &cmac->used, &cmac->len, in, inSz, cmac->aes.heap);
7577
}
7678
#endif /* WOLFSSL_HASH_KEEP */

wolfcrypt/src/curve25519.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -971,6 +971,9 @@ int wc_curve25519_export_private_raw_ex(curve25519_key* key, byte* out,
971971
if (key == NULL || out == NULL || outLen == NULL)
972972
return BAD_FUNC_ARG;
973973

974+
if (!key->privSet)
975+
return ECC_BAD_ARG_E;
976+
974977
/* check size of outgoing buffer */
975978
if (*outLen < CURVE25519_KEYSIZE) {
976979
*outLen = CURVE25519_KEYSIZE;

wolfcrypt/src/curve448.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,10 @@ int wc_curve448_export_private_raw_ex(curve448_key* key, byte* out,
478478
ret = BAD_FUNC_ARG;
479479
}
480480

481+
if ((ret == 0) && (!key->privSet)) {
482+
ret = ECC_BAD_ARG_E;
483+
}
484+
481485
/* check size of outgoing buffer */
482486
if ((ret == 0) && (*outLen < CURVE448_KEY_SIZE)) {
483487
*outLen = CURVE448_KEY_SIZE;

wolfcrypt/src/ed25519.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1414,7 +1414,7 @@ int wc_ed25519_import_private_key(const byte* priv, word32 privSz,
14141414
int wc_ed25519_export_private_only(const ed25519_key* key, byte* out, word32* outLen)
14151415
{
14161416
/* sanity checks on arguments */
1417-
if (key == NULL || out == NULL || outLen == NULL)
1417+
if (key == NULL || !key->privKeySet || out == NULL || outLen == NULL)
14181418
return BAD_FUNC_ARG;
14191419

14201420
if (*outLen < ED25519_KEY_SIZE) {

wolfcrypt/src/ed448.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1301,6 +1301,10 @@ int wc_ed448_export_private_only(const ed448_key* key, byte* out, word32* outLen
13011301
ret = BAD_FUNC_ARG;
13021302
}
13031303

1304+
if ((ret == 0) && (!key->privKeySet)) {
1305+
ret = BAD_FUNC_ARG;
1306+
}
1307+
13041308
if ((ret == 0) && (*outLen < ED448_KEY_SIZE)) {
13051309
*outLen = ED448_KEY_SIZE;
13061310
ret = BUFFER_E;
@@ -1333,6 +1337,10 @@ int wc_ed448_export_private(const ed448_key* key, byte* out, word32* outLen)
13331337
ret = BAD_FUNC_ARG;
13341338
}
13351339

1340+
if ((ret == 0) && (!key->privKeySet)) {
1341+
ret = BAD_FUNC_ARG;
1342+
}
1343+
13361344
if ((ret == 0) && (*outLen < ED448_PRV_KEY_SIZE)) {
13371345
*outLen = ED448_PRV_KEY_SIZE;
13381346
ret = BUFFER_E;

wolfcrypt/src/rng_bank.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -928,6 +928,8 @@ WOLFSSL_API int wc_BankRef_Release(WC_RNG *rng)
928928
{
929929
int isZero = 0;
930930
int ret = 0;
931+
if (rng == NULL)
932+
return BAD_FUNC_ARG;
931933
if (rng->bankref == NULL)
932934
return BAD_FUNC_ARG;
933935
wolfSSL_RefDec(&rng->bankref->refcount, &isZero, &ret);

0 commit comments

Comments
 (0)