Skip to content

Commit d111d7d

Browse files
committed
Fix MD5 and SHA buffer overrun.
1 parent 4ed197d commit d111d7d

3 files changed

Lines changed: 13 additions & 4 deletions

File tree

wolfcrypt/src/md5.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,9 @@ int wc_Md5Final(wc_Md5* md5, byte* hash)
461461

462462
/* pad with zeros */
463463
if (md5->buffLen > WC_MD5_PAD_SIZE) {
464-
XMEMSET(&local[md5->buffLen], 0, WC_MD5_BLOCK_SIZE - md5->buffLen);
464+
if (md5->buffLen < WC_MD5_BLOCK_SIZE) {
465+
XMEMSET(&local[md5->buffLen], 0, WC_MD5_BLOCK_SIZE - md5->buffLen);
466+
}
465467
md5->buffLen += WC_MD5_BLOCK_SIZE - md5->buffLen;
466468

467469
#if defined(BIG_ENDIAN_ORDER) && !defined(FREESCALE_MMCAU_SHA)

wolfcrypt/src/sha256.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1321,8 +1321,11 @@ static int InitSha256(wc_Sha256* sha256)
13211321

13221322
/* pad with zeros */
13231323
if (sha256->buffLen > WC_SHA256_PAD_SIZE) {
1324-
XMEMSET(&local[sha256->buffLen], 0,
1325-
WC_SHA256_BLOCK_SIZE - sha256->buffLen);
1324+
if (sha256->buffLen < WC_SHA256_BLOCK_SIZE) {
1325+
XMEMSET(&local[sha256->buffLen], 0,
1326+
WC_SHA256_BLOCK_SIZE - sha256->buffLen);
1327+
}
1328+
13261329
sha256->buffLen += WC_SHA256_BLOCK_SIZE - sha256->buffLen;
13271330

13281331
#if defined(WOLFSSL_USE_ESP32_CRYPT_HASH_HW) && \

wolfcrypt/src/sha512.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -942,7 +942,11 @@ static WC_INLINE int Sha512Final(wc_Sha512* sha512)
942942

943943
/* pad with zeros */
944944
if (sha512->buffLen > WC_SHA512_PAD_SIZE) {
945-
XMEMSET(&local[sha512->buffLen], 0, WC_SHA512_BLOCK_SIZE - sha512->buffLen);
945+
if (sha512->buffLen < WC_SHA512_BLOCK_SIZE ) {
946+
XMEMSET(&local[sha512->buffLen], 0,
947+
WC_SHA512_BLOCK_SIZE - sha512->buffLen);
948+
}
949+
946950
sha512->buffLen += WC_SHA512_BLOCK_SIZE - sha512->buffLen;
947951
#if defined(LITTLE_ENDIAN_ORDER)
948952
#if defined(USE_INTEL_SPEEDUP) && \

0 commit comments

Comments
 (0)