diff --git a/src/tls.c b/src/tls.c index 48d76dfa2..a2f0e8782 100644 --- a/src/tls.c +++ b/src/tls.c @@ -186,6 +186,7 @@ int BuildTlsFinished(WOLFSSL* ssl, Hashes* hashes, const byte* sender) return MEMORY_E; #endif + XMEMSET(handshake_hash, 0, HSHASH_SZ); ret = BuildTlsHandshakeHash(ssl, handshake_hash, &hashSz); if (ret == 0) { if (XSTRNCMP((const char*)sender, (const char*)kTlsClientStr, diff --git a/src/x509.c b/src/x509.c index a1c4fc4db..73369f3d3 100644 --- a/src/x509.c +++ b/src/x509.c @@ -11173,7 +11173,7 @@ err: pemSz = (int)(l - i); /* check calculated length */ - if (pemSz > MAX_WOLFSSL_FILE_SIZE || pemSz < 0) { + if (pemSz > MAX_WOLFSSL_FILE_SIZE || pemSz <= 0) { WOLFSSL_MSG("PEM_read_X509_ex file size error"); return NULL; } diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 352530d43..6dea81dbd 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -10350,6 +10350,9 @@ exit_enc: RESET_MULTI_VALUE_STATS_VARS(); + if (ret != 0) + goto exit; + bench_stats_start(&count, &start); do { for (i = 0; i < ntimes; i++) { diff --git a/wolfcrypt/src/asn.c b/wolfcrypt/src/asn.c index efdc7bb61..43bef931a 100644 --- a/wolfcrypt/src/asn.c +++ b/wolfcrypt/src/asn.c @@ -37602,8 +37602,10 @@ int wc_MIME_parse_headers(char* in, int inLen, MimeHdr** headers) mimeType == MIME_PARAM)) && pos >= 1) { mimeStatus = MIME_BODYVAL; end = pos-1; - if (nameAttr != NULL) + if (nameAttr != NULL) { XFREE(nameAttr, NULL, DYNAMIC_TYPE_PKCS7); + nameAttr = NULL; + } ret = wc_MIME_header_strip(curLine, &nameAttr, start, end); if (ret) { goto error; diff --git a/wolfcrypt/src/pkcs7.c b/wolfcrypt/src/pkcs7.c index 04173be70..af6bb55bd 100644 --- a/wolfcrypt/src/pkcs7.c +++ b/wolfcrypt/src/pkcs7.c @@ -12576,7 +12576,14 @@ int wc_PKCS7_EncodeEncryptedData(PKCS7* pkcs7, byte* output, word32 outputSz) return MEMORY_E; } - FlattenAttributes(pkcs7, flatAttribs, attribs, attribsCount); + ret = FlattenAttributes(pkcs7, flatAttribs, attribs, attribsCount); + if (ret != 0) { + XFREE(attribs, pkcs7->heap, DYNAMIC_TYPE_PKCS7); + XFREE(encryptedContent, pkcs7->heap, DYNAMIC_TYPE_PKCS7); + XFREE(plain, pkcs7->heap, DYNAMIC_TYPE_PKCS7); + XFREE(flatAttribs, pkcs7->heap, DYNAMIC_TYPE_PKCS7); + return ret; + } attribsSetSz = SetImplicit(ASN_SET, 1, attribsSz, attribSet); } else {