diff --git a/src/x509.c b/src/x509.c index 6b7adb614..9cd2a3874 100644 --- a/src/x509.c +++ b/src/x509.c @@ -5482,6 +5482,11 @@ int wolfSSL_X509_cmp(const WOLFSSL_X509 *a, const WOLFSSL_X509 *b) } #else { + word32 idx = 0; + int sz; + byte lbit = 0; + int rawLen; + unsigned char* rawKey; #ifdef WOLFSSL_SMALL_STACK RsaKey *rsa = (RsaKey*)XMALLOC(sizeof(RsaKey), NULL, DYNAMIC_TYPE_RSA); @@ -5492,11 +5497,6 @@ int wolfSSL_X509_cmp(const WOLFSSL_X509 *a, const WOLFSSL_X509 *b) #else RsaKey rsa[1]; #endif - word32 idx = 0; - int sz; - byte lbit = 0; - int rawLen; - unsigned char* rawKey; if (wc_InitRsaKey(rsa, NULL) != 0) { WOLFSSL_MSG("wc_InitRsaKey failure"); diff --git a/sslSniffer/sslSnifferTest/snifftest.c b/sslSniffer/sslSnifferTest/snifftest.c index cbc152eaa..9c4d20286 100644 --- a/sslSniffer/sslSnifferTest/snifftest.c +++ b/sslSniffer/sslSnifferTest/snifftest.c @@ -900,7 +900,7 @@ int main(int argc, char** argv) (void)chainSz; #endif } - + /* check if we are done reading file */ if (packet == NULL && data == NULL && saveFile) { break; diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 1b20e3919..a5d44709d 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -3648,6 +3648,7 @@ void bench_md5(int useDeviceID) double start; int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_MD5_DIGEST_SIZE, HEAP_HINT); + WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_MD5_DIGEST_SIZE, HEAP_HINT); /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); @@ -3741,6 +3742,7 @@ void bench_sha(int useDeviceID) double start; int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA_DIGEST_SIZE, HEAP_HINT); + WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA_DIGEST_SIZE, HEAP_HINT); /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); @@ -3832,6 +3834,7 @@ void bench_sha224(int useDeviceID) double start; int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA224_DIGEST_SIZE, HEAP_HINT); + WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA224_DIGEST_SIZE, HEAP_HINT); /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); @@ -3918,6 +3921,7 @@ void bench_sha256(int useDeviceID) double start; int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA256_DIGEST_SIZE, HEAP_HINT); + WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA256_DIGEST_SIZE, HEAP_HINT); /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); @@ -4007,6 +4011,7 @@ void bench_sha384(int useDeviceID) double start; int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA384_DIGEST_SIZE, HEAP_HINT); + WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA384_DIGEST_SIZE, HEAP_HINT); /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); @@ -4093,6 +4098,7 @@ void bench_sha512(int useDeviceID) double start; int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA512_DIGEST_SIZE, HEAP_HINT); + WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA512_DIGEST_SIZE, HEAP_HINT); /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); @@ -4181,6 +4187,7 @@ void bench_sha3_224(int useDeviceID) double start; int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_224_DIGEST_SIZE, HEAP_HINT); + WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_224_DIGEST_SIZE, HEAP_HINT); /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); @@ -4267,6 +4274,7 @@ void bench_sha3_256(int useDeviceID) double start; int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_256_DIGEST_SIZE, HEAP_HINT); + WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_256_DIGEST_SIZE, HEAP_HINT); /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); @@ -4353,6 +4361,7 @@ void bench_sha3_384(int useDeviceID) double start; int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_384_DIGEST_SIZE, HEAP_HINT); + WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_384_DIGEST_SIZE, HEAP_HINT); /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); @@ -4439,6 +4448,7 @@ void bench_sha3_512(int useDeviceID) double start; int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_512_DIGEST_SIZE, HEAP_HINT); + WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_512_DIGEST_SIZE, HEAP_HINT); /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); @@ -4805,6 +4815,7 @@ static void bench_hmac(int useDeviceID, int type, int digestSz, int ret = 0, i, count = 0, times, pending = 0; #ifdef WOLFSSL_ASYNC_CRYPT WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_MAX_DIGEST_SIZE, HEAP_HINT); + WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_MAX_DIGEST_SIZE, HEAP_HINT); #else byte digest[BENCH_MAX_PENDING][WC_MAX_DIGEST_SIZE]; #endif @@ -5619,6 +5630,11 @@ void bench_dh(int useDeviceID) WC_DECLARE_ARRAY(agree, byte, BENCH_MAX_PENDING, BENCH_DH_KEY_SIZE, HEAP_HINT); WC_DECLARE_ARRAY(priv, byte, BENCH_MAX_PENDING, BENCH_DH_PRIV_SIZE, HEAP_HINT); WC_DECLARE_VAR(priv2, byte, BENCH_DH_PRIV_SIZE, HEAP_HINT); + + WC_INIT_ARRAY(pub, byte, BENCH_MAX_PENDING, BENCH_DH_KEY_SIZE, HEAP_HINT); + WC_INIT_ARRAY(agree, byte, BENCH_MAX_PENDING, BENCH_DH_KEY_SIZE, HEAP_HINT); + WC_INIT_ARRAY(priv, byte, BENCH_MAX_PENDING, BENCH_DH_PRIV_SIZE, HEAP_HINT); + #ifdef WC_DECLARE_VAR_IS_HEAP_ALLOC if (pub[0] == NULL || pub2 == NULL || agree[0] == NULL || priv[0] == NULL || priv2 == NULL) { ret = MEMORY_E; @@ -5920,6 +5936,14 @@ void bench_ecc(int useDeviceID, int curveId) WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, MAX_ECC_BYTES, HEAP_HINT); #endif +#ifdef HAVE_ECC_DHE + WC_INIT_ARRAY(shared, byte, BENCH_MAX_PENDING, MAX_ECC_BYTES, HEAP_HINT); +#endif +#if !defined(NO_ASN) && defined(HAVE_ECC_SIGN) + WC_INIT_ARRAY(sig, byte, BENCH_MAX_PENDING, ECC_MAX_SIG_SIZE, HEAP_HINT); + WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, MAX_ECC_BYTES, HEAP_HINT); +#endif + #ifdef WOLFSSL_ASYNC_CRYPT deviceID = useDeviceID ? devId : INVALID_DEVID; #else diff --git a/wolfcrypt/src/aes.c b/wolfcrypt/src/aes.c index 2594fa941..9febd9408 100644 --- a/wolfcrypt/src/aes.c +++ b/wolfcrypt/src/aes.c @@ -8246,7 +8246,9 @@ int WARN_UNUSED_RESULT AES_GCM_decrypt_C( XMEMCPY(p, scratch, partial); } - /* ConstantCompare returns cumulative or of the bytewise XOR. */ + /* ConstantCompare returns the cumulative bitwise or of the bitwise xor of + * the pairwise bytes in the strings. + */ res = ConstantCompare(authTag, Tprime, authTagSz); /* convert positive retval from ConstantCompare() to all-1s word, in * constant time. diff --git a/wolfcrypt/src/asn.c b/wolfcrypt/src/asn.c index 869984e12..a21ea282f 100644 --- a/wolfcrypt/src/asn.c +++ b/wolfcrypt/src/asn.c @@ -271,7 +271,7 @@ static word32 SizeASNLength(word32 length) * @param [in] cnt Number of elements required. */ #define DECL_ASNGETDATA(name, cnt) \ - ASNGetData* name = NULL; + ASNGetData* name = NULL /* Allocates the dynamic BER decoding data. * @@ -327,7 +327,7 @@ static word32 SizeASNLength(word32 length) * @param [in] cnt Number of elements required. */ #define DECL_ASNSETDATA(name, cnt) \ - ASNSetData* name = NULL; + ASNSetData* name = NULL /* Allocates the dynamic DER encoding data. * @@ -383,7 +383,7 @@ static word32 SizeASNLength(word32 length) * @param [in] cnt Number of elements required. */ #define DECL_ASNGETDATA(name, cnt) \ - ASNGetData name[cnt]; + ASNGetData name[cnt] /* No implementation as declartion is static. * @@ -402,7 +402,7 @@ static word32 SizeASNLength(word32 length) * @param [in] heap Dynamic memory allocation hint. */ #define CALLOC_ASNGETDATA(name, cnt, err, heap) \ - XMEMSET(name, 0, sizeof(name)); + XMEMSET(name, 0, sizeof(name)) /* No implementation as declartion is static. * @@ -417,7 +417,7 @@ static word32 SizeASNLength(word32 length) * @param [in] cnt Number of elements required. */ #define DECL_ASNSETDATA(name, cnt) \ - ASNSetData name[cnt]; + ASNSetData name[cnt] /* No implementation as declartion is static. * @@ -436,7 +436,7 @@ static word32 SizeASNLength(word32 length) * @param [in] heap Dynamic memory allocation hint. */ #define CALLOC_ASNSETDATA(name, cnt, err, heap) \ - XMEMSET(name, 0, sizeof(name)); + XMEMSET(name, 0, sizeof(name)) /* No implementation as declartion is static. * @@ -28634,7 +28634,9 @@ static int DecodeAsymKey(const byte* input, word32* inOutIdx, word32 inSz, const byte* priv; const byte* pub; #else + int ret = 0; DECL_ASNGETDATA(dataASN, edKeyASN_Length); + CALLOC_ASNGETDATA(dataASN, edKeyASN_Length, ret, NULL); #endif if (input == NULL || inOutIdx == NULL || inSz == 0 || @@ -28714,10 +28716,6 @@ static int DecodeAsymKey(const byte* input, word32* inOutIdx, word32 inSz, return ASN_PARSE_E; return 0; #else - int ret = 0; - - CALLOC_ASNGETDATA(dataASN, edKeyASN_Length, ret, NULL); - if (ret == 0) { /* Require OID. */ word32 oidSz; diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index b48e885a1..de83355b1 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -15740,7 +15740,7 @@ static int dh_fips_generate_test(WC_RNG *rng) { int ret = 0; #ifdef WOLFSSL_SMALL_STACK - DhKey *key = (DhKey *)XMALLOC(sizeof *key, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);; + DhKey *key = (DhKey *)XMALLOC(sizeof *key, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); #else DhKey key[1]; #endif @@ -19570,20 +19570,22 @@ WOLFSSL_TEST_SUBROUTINE int openssl_pkey1_test(void) sizeof_client_cert_der_4096, SSL_FILETYPE_ASN1); keyLenBits = 4096; #else - XFILE f; + { + XFILE f; - f = XFOPEN(clientKey, "rb"); + f = XFOPEN(clientKey, "rb"); - if (!f) { - err_sys("can't open ./certs/client-key.der, " - "Please run from wolfSSL home dir", -41); - ret = -9000; - goto openssl_pkey1_test_done; + if (!f) { + err_sys("can't open ./certs/client-key.der, " + "Please run from wolfSSL home dir", -41); + ret = -9000; + goto openssl_pkey1_test_done; + } + + cliKeySz = (long)XFREAD(tmp, 1, FOURK_BUF, f); + XFCLOSE(f); } - cliKeySz = (long)XFREAD(tmp, 1, FOURK_BUF, f); - XFCLOSE(f); - /* using existing wolfSSL api to get public and private key */ x509 = wolfSSL_X509_load_certificate_file(clientCert, SSL_FILETYPE_ASN1); #endif /* USE_CERT_BUFFERS */ @@ -23360,7 +23362,7 @@ static int ecc_exp_imp_test(ecc_key* key) int ret; int curve_id; #ifdef WOLFSSL_SMALL_STACK - ecc_key *keyImp = (ecc_key *)XMALLOC(sizeof *keyImp, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);; + ecc_key *keyImp = (ecc_key *)XMALLOC(sizeof *keyImp, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); #else ecc_key keyImp[1]; #endif diff --git a/wolfssl/wolfcrypt/types.h b/wolfssl/wolfcrypt/types.h index 5fad9b113..c95839f52 100644 --- a/wolfssl/wolfcrypt/types.h +++ b/wolfssl/wolfcrypt/types.h @@ -515,7 +515,8 @@ decouple library dependencies with standard string, memory and so on. VAR_TYPE* VAR_NAME = (VAR_TYPE*)XMALLOC(sizeof(VAR_TYPE) * (VAR_SIZE), (HEAP), DYNAMIC_TYPE_WOLF_BIGINT) #define WC_DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ VAR_TYPE* VAR_NAME[VAR_ITEMS]; \ - int idx##VAR_NAME, inner_idx_##VAR_NAME; \ + int idx##VAR_NAME, inner_idx_##VAR_NAME + #define WC_INIT_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ for (idx##VAR_NAME=0; idx##VAR_NAME<(VAR_ITEMS); idx##VAR_NAME++) { \ (VAR_NAME)[idx##VAR_NAME] = (VAR_TYPE*)XMALLOC(VAR_SIZE, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT); \ if ((VAR_NAME)[idx##VAR_NAME] == NULL) { \ @@ -538,7 +539,8 @@ decouple library dependencies with standard string, memory and so on. #define WC_DECLARE_ARRAY_DYNAMIC_DEC(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ WC_DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) - #define WC_DECLARE_ARRAY_DYNAMIC_EXE(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) + #define WC_DECLARE_ARRAY_DYNAMIC_EXE(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ + WC_INIT_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) #define WC_FREE_ARRAY_DYNAMIC(VAR_NAME, VAR_ITEMS, HEAP) \ WC_FREE_ARRAY(VAR_NAME, VAR_ITEMS, HEAP) #else @@ -547,6 +549,7 @@ decouple library dependencies with standard string, memory and so on. VAR_TYPE VAR_NAME[VAR_SIZE] #define WC_DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ VAR_TYPE VAR_NAME[VAR_ITEMS][VAR_SIZE] + #define WC_INIT_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) do {} while(0) #define WC_FREE_VAR(VAR_NAME, HEAP) /* nothing to free, its stack */ #define WC_FREE_ARRAY(VAR_NAME, VAR_ITEMS, HEAP) /* nothing to free, its stack */