Skip to content

Commit edad8d1

Browse files
avoid callback buffer overwrite with sha512_224 and remove min from wolfcaam_cmac
1 parent 6a89464 commit edad8d1

2 files changed

Lines changed: 7 additions & 3 deletions

File tree

wolfcrypt/src/port/caam/wolfcaam_cmac.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ int wc_CAAM_Cmac(Cmac* cmac, const byte* key, word32 keySz, const byte* in,
9999
WOLFSSL_MSG("Error with CMAC buffer size");
100100
return -1;
101101
}
102-
add = min(sz, (int)(AES_BLOCK_SIZE - cmac->bufferSz));
102+
add = (sz < ((int)(AES_BLOCK_SIZE - cmac->bufferSz))) ? sz :
103+
(int)(AES_BLOCK_SIZE - cmac->bufferSz);
103104
XMEMCPY(&cmac->buffer[cmac->bufferSz], pt, add);
104105

105106
cmac->bufferSz += add;

wolfcrypt/src/sha512.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,9 +1110,12 @@ static int Sha512_Family_Final(wc_Sha512* sha512, byte* hash, int digestSz,
11101110

11111111
#ifdef WOLF_CRYPTO_CB
11121112
if (sha512->devId != INVALID_DEVID) {
1113-
ret = wc_CryptoCb_Sha512Hash(sha512, NULL, 0, hash);
1114-
if (ret != CRYPTOCB_UNAVAILABLE)
1113+
byte localHash[WC_SHA512_DIGEST_SIZE];
1114+
ret = wc_CryptoCb_Sha512Hash(sha512, NULL, 0, localHash);
1115+
if (ret != CRYPTOCB_UNAVAILABLE) {
1116+
XMEMCPY(hash, localHash, digestSz);
11151117
return ret;
1118+
}
11161119
/* fall-through when unavailable */
11171120
}
11181121
#endif

0 commit comments

Comments
 (0)