forked from wolfSSL/wolfssl
avoid callback buffer overwrite with sha512_224 and remove min from wolfcaam_cmac
This commit is contained in:
@ -99,7 +99,8 @@ int wc_CAAM_Cmac(Cmac* cmac, const byte* key, word32 keySz, const byte* in,
|
|||||||
WOLFSSL_MSG("Error with CMAC buffer size");
|
WOLFSSL_MSG("Error with CMAC buffer size");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
add = min(sz, (int)(AES_BLOCK_SIZE - cmac->bufferSz));
|
add = (sz < ((int)(AES_BLOCK_SIZE - cmac->bufferSz))) ? sz :
|
||||||
|
(int)(AES_BLOCK_SIZE - cmac->bufferSz);
|
||||||
XMEMCPY(&cmac->buffer[cmac->bufferSz], pt, add);
|
XMEMCPY(&cmac->buffer[cmac->bufferSz], pt, add);
|
||||||
|
|
||||||
cmac->bufferSz += add;
|
cmac->bufferSz += add;
|
||||||
|
@ -1110,9 +1110,12 @@ static int Sha512_Family_Final(wc_Sha512* sha512, byte* hash, int digestSz,
|
|||||||
|
|
||||||
#ifdef WOLF_CRYPTO_CB
|
#ifdef WOLF_CRYPTO_CB
|
||||||
if (sha512->devId != INVALID_DEVID) {
|
if (sha512->devId != INVALID_DEVID) {
|
||||||
ret = wc_CryptoCb_Sha512Hash(sha512, NULL, 0, hash);
|
byte localHash[WC_SHA512_DIGEST_SIZE];
|
||||||
if (ret != CRYPTOCB_UNAVAILABLE)
|
ret = wc_CryptoCb_Sha512Hash(sha512, NULL, 0, localHash);
|
||||||
|
if (ret != CRYPTOCB_UNAVAILABLE) {
|
||||||
|
XMEMCPY(hash, localHash, digestSz);
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
/* fall-through when unavailable */
|
/* fall-through when unavailable */
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user