misc fixes:

wolfcrypt/test/test.c: fix gating for verify4 in scrypt_test(), and fix WOLFSSL_SMALL_STACK -Wframe-larger-than=2048 warnings in sha256_test() and sha512_test().

src/ssl.c: fix for true-but-benign nullPointerRedundantCheck in ProcessBufferTryDecodeEd25519().

tests/api.c: fix for -Wmaybe-uninitialized in test_wc_PKCS7_VerifySignedData_RSA() identified via cross-m68k-all-asm.
This commit is contained in:
Daniel Pouzzner 2024-03-05 17:44:33 -06:00
parent ee39a8f17f
commit 321a72c906
3 changed files with 58 additions and 14 deletions

View File

@ -6805,7 +6805,7 @@ static int ProcessBufferTryDecodeEd25519(WOLFSSL_CTX* ctx, WOLFSSL* ssl,
ssl->buffers.keyType = ed25519_sa_algo;
ssl->buffers.keySz = *keySz;
}
else if (ctx) {
else {
ctx->privateKeyType = ed25519_sa_algo;
ctx->privateKeySz = *keySz;
}

View File

@ -28015,7 +28015,7 @@ static int test_wc_PKCS7_VerifySignedData_RSA(void)
XFILE signedBundle = XBADFILE;
int signedBundleSz = 0;
int chunkSz = 1;
int i, rc;
int i, rc = 0;
byte* buf = NULL;
ExpectTrue((signedBundle = XFOPEN("./certs/test-stream-sign.p7b",

View File

@ -3198,6 +3198,14 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t sha256_test(void)
byte i_hashcopy[WC_SHA256_DIGEST_SIZE];
testVector interleave_test_sha[4];
wc_Sha256 i_sha, i_shaCopy;
#endif
#ifndef NO_LARGE_HASH_TEST
#define LARGE_HASH_TEST_INPUT_SZ 1024
#ifdef WOLFSSL_SMALL_STACK
byte *large_input = NULL;
#else
byte large_input[LARGE_HASH_TEST_INPUT_SZ];
#endif
#endif
int times = sizeof(test_sha) / sizeof(struct testVector), i;
@ -3339,17 +3347,26 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t sha256_test(void)
#ifndef NO_LARGE_HASH_TEST
/* BEGIN LARGE HASH TEST */ {
byte large_input[1024];
#ifdef HASH_SIZE_LIMIT
const char* large_digest =
WOLFSSL_SMALL_STACK_STATIC const char* large_digest =
"\xa4\x75\x9e\x7a\xa2\x03\x38\x32\x88\x66\xa2\xea\x17\xea\xf8\xc7"
"\xfe\x4e\xc6\xbb\xe3\xbb\x71\xce\xe7\xdf\x7c\x04\x61\xb3\xc2\x2f";
#else
const char* large_digest =
WOLFSSL_SMALL_STACK_STATIC const char* large_digest =
"\x27\x78\x3e\x87\x96\x3a\x4e\xfb\x68\x29\xb5\x31\xc9\xba\x57\xb4"
"\x4f\x45\x79\x7f\x67\x70\xbd\x63\x7f\xbf\x0d\x80\x7c\xbd\xba\xe0";
#endif
for (i = 0; i < (int)sizeof(large_input); i++) {
#ifdef WOLFSSL_SMALL_STACK
large_input = (byte *)XMALLOC(LARGE_HASH_TEST_INPUT_SZ, HEAP_HINT,
DYNAMIC_TYPE_TMP_BUFFER);
if (large_input == NULL) {
ERROR_OUT(WC_TEST_RET_ENC_EC(MEMORY_E), exit);
}
#endif
for (i = 0; i < LARGE_HASH_TEST_INPUT_SZ; i++) {
large_input[i] = (byte)(i & 0xFF);
}
#ifdef HASH_SIZE_LIMIT
@ -3358,11 +3375,11 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t sha256_test(void)
times = 100;
#endif
#ifdef WOLFSSL_PIC32MZ_HASH
wc_Sha256SizeSet(&sha, times * sizeof(large_input));
wc_Sha256SizeSet(&sha, times * LARGE_HASH_TEST_INPUT_SZ);
#endif
for (i = 0; i < times; ++i) {
ret = wc_Sha256Update(&sha, (byte*)large_input,
(word32)sizeof(large_input));
LARGE_HASH_TEST_INPUT_SZ);
if (ret != 0)
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), exit);
}
@ -3372,10 +3389,14 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t sha256_test(void)
if (XMEMCMP(hash, large_digest, WC_SHA256_DIGEST_SIZE) != 0)
ERROR_OUT(WC_TEST_RET_ENC_NC, exit);
} /* END LARGE HASH TEST */
#undef LARGE_HASH_TEST_INPUT_SZ
#endif /* NO_LARGE_HASH_TEST */
exit:
#if !defined(NO_LARGE_HASH_TEST) && defined(WOLFSSL_SMALL_STACK)
XFREE(large_input, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
#endif
wc_Sha256Free(&sha);
wc_Sha256Free(&shaCopy);
#ifndef NO_WOLFSSL_SHA256_INTERLEAVE
@ -3405,6 +3426,14 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t sha512_test(void)
byte i_hash[WC_SHA512_DIGEST_SIZE];
byte i_hashcopy[WC_SHA512_DIGEST_SIZE];
testVector interleave_test_sha[3];
#endif
#ifndef NO_LARGE_HASH_TEST
#define LARGE_HASH_TEST_INPUT_SZ 1024
#ifdef WOLFSSL_SMALL_STACK
byte *large_input = NULL;
#else
byte large_input[LARGE_HASH_TEST_INPUT_SZ];
#endif
#endif
int times = sizeof(test_sha) / sizeof(struct testVector), i;
@ -3539,22 +3568,30 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t sha512_test(void)
#ifndef NO_LARGE_HASH_TEST
/* BEGIN LARGE HASH TEST */ {
byte large_input[1024];
#ifdef HASH_SIZE_LIMIT
const char* large_digest =
WOLFSSL_SMALL_STACK_STATIC const char* large_digest =
"\x30\x9B\x96\xA6\xE9\x43\x78\x30\xA3\x71\x51\x61\xC1\xEB\xE1\xBE"
"\xC8\xA5\xF9\x13\x5A\xD6\x6D\x9E\x46\x31\x31\x67\x8D\xE2\xC0\x0B"
"\x2A\x1A\x03\xE1\xF3\x48\xA7\x33\xBD\x49\xF8\xFF\xF1\xC2\xC2\x95"
"\xCB\xF0\xAF\x87\x61\x85\x58\x63\x6A\xCA\x70\x9C\x8B\x83\x3F\x5D";
#else
const char* large_digest =
WOLFSSL_SMALL_STACK_STATIC const char* large_digest =
"\x5a\x1f\x73\x90\xbd\x8c\xe4\x63\x54\xce\xa0\x9b\xef\x32\x78\x2d"
"\x2e\xe7\x0d\x5e\x2f\x9d\x15\x1b\xdd\x2d\xde\x65\x0c\x7b\xfa\x83"
"\x5e\x80\x02\x13\x84\xb8\x3f\xff\x71\x62\xb5\x09\x89\x63\xe1\xdc"
"\xa5\xdc\xfc\xfa\x9d\x1a\x4d\xc0\xfa\x3a\x14\xf6\x01\x51\x90\xa4";
#endif
for (i = 0; i < (int)sizeof(large_input); i++) {
#ifdef WOLFSSL_SMALL_STACK
large_input = (byte *)XMALLOC(LARGE_HASH_TEST_INPUT_SZ, HEAP_HINT,
DYNAMIC_TYPE_TMP_BUFFER);
if (large_input == NULL) {
ERROR_OUT(WC_TEST_RET_ENC_EC(MEMORY_E), exit);
}
#endif
for (i = 0; i < LARGE_HASH_TEST_INPUT_SZ; i++) {
large_input[i] = (byte)(i & 0xFF);
}
#ifdef HASH_SIZE_LIMIT
@ -3564,7 +3601,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t sha512_test(void)
#endif
for (i = 0; i < times; ++i) {
ret = wc_Sha512Update(&sha, (byte*)large_input,
(word32)sizeof(large_input));
LARGE_HASH_TEST_INPUT_SZ);
if (ret != 0)
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), exit);
}
@ -3578,16 +3615,21 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t sha512_test(void)
/* Unaligned memory access test */
for (i = 1; i < 16; i++) {
ret = wc_Sha512Update(&sha, (byte*)large_input + i,
(word32)sizeof(large_input) - i);
LARGE_HASH_TEST_INPUT_SZ - i);
if (ret != 0)
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), exit);
ret = wc_Sha512Final(&sha, hash);
}
#endif
} /* END LARGE HASH TEST */
#undef LARGE_HASH_TEST_INPUT_SZ
#endif /* NO_LARGE_HASH_TEST */
exit:
#if !defined(NO_LARGE_HASH_TEST) && defined(WOLFSSL_SMALL_STACK)
XFREE(large_input, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
#endif
wc_Sha512Free(&sha);
wc_Sha512Free(&shaCopy);
#ifndef NO_WOLFSSL_SHA256_INTERLEAVE
@ -24356,7 +24398,9 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t scrypt_test(void)
return WC_TEST_RET_ENC_NC;
#endif
#else
#ifdef SCRYPT_TEST_ALL
(void)verify4;
#endif
#endif /* !BENCH_EMBEDDED && !defined(WOLFSSL_LINUXKM) && !HAVE_INTEL_QA */
#if !defined(BENCH_EMBEDDED)