Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/os-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ jobs:
'--enable-curve25519=nonblock --enable-ecc=nonblock --enable-sp=yes,nonblock CPPFLAGS="-DWOLFSSL_PUBLIC_MP -DWOLFSSL_DEBUG_NONBLOCK"',
'--enable-certreq --enable-certext --enable-certgen --disable-secure-renegotiation-info CPPFLAGS="-DNO_TLS"',
'--enable-ocsp --enable-ocsp-responder --enable-ocspstapling CPPFLAGS="-DWOLFSSL_NONBLOCK_OCSP" --enable-maxfragment',
'--enable-all CPPFLAGS=-DWOLFSSL_HASH_KEEP',
]
name: make check
if: github.repository_owner == 'wolfssl'
Expand Down
7 changes: 6 additions & 1 deletion wolfcrypt/src/hash.c
Original file line number Diff line number Diff line change
Expand Up @@ -1956,9 +1956,14 @@ int _wc_Hash_Grow(byte** msg, word32* used, word32* len, const byte* in,
{
word32 usedSz = 0;

if (inSz <= 0 || !WC_SAFE_SUM_WORD32(*used, (word32)inSz, usedSz))
if (inSz < 0 || !WC_SAFE_SUM_WORD32(*used, (word32)inSz, usedSz))
return BAD_FUNC_ARG;

/* Allow zero-length input as a no-op. Some callers may pass zero-length
* data during hash operations and this should not be treated as an error. */
if (inSz == 0)
return 0;

if (*len < usedSz) {
if (*msg == NULL) {
*msg = (byte*)XMALLOC(usedSz, heap, DYNAMIC_TYPE_TMP_BUFFER);
Expand Down
13 changes: 8 additions & 5 deletions wolfcrypt/src/port/maxim/max3266x.c
Original file line number Diff line number Diff line change
Expand Up @@ -808,23 +808,26 @@ int wc_MXC_TPU_SHA_Copy(void* src, void* dst, word32 ctxSz,
byte** dstMsg, word32* dstUsed, word32* dstLen,
void* dstHeap, void* srcHeap)
{
byte* srcBuf;
byte* srcBuf = NULL;

if (src == NULL || dst == NULL || dstMsg == NULL ||
dstUsed == NULL || dstLen == NULL || ctxSz == 0) {
return BAD_FUNC_ARG;
}

srcBuf = *dstMsg;

/* Free existing dst msg buffer using dst's original heap */
wc_MXC_TPU_SHA_Free(dstMsg, dstUsed, dstLen, dstHeap);

/* Shallow copy the full context struct */
XMEMCPY(dst, src, ctxSz);

/* Deep copy src msg buffer if present, allocate using src's heap */
if (srcBuf != NULL) {
/* Deep copy src msg buffer if present. Since dstMsg points into the dst
* struct, the XMEMCPY above overwrites it with the src's msg pointer.
* Save that pointer, allocate a new buffer for dst, and copy the data.
* Do NOT move srcBuf assignment before XMEMCPY - it must capture the
* src msg pointer that lands in *dstMsg after the shallow copy. */
if (*dstMsg != NULL) {
srcBuf = *dstMsg;
*dstMsg = (byte*)XMALLOC(*dstLen, srcHeap, DYNAMIC_TYPE_TMP_BUFFER);
if (*dstMsg == NULL) {
return MEMORY_E;
Expand Down
Loading