From e026bce50fa2eb687574b4b0bffd0ba4aa3f1072 Mon Sep 17 00:00:00 2001 From: heinrich5991 Date: Tue, 5 Jul 2022 10:17:47 +0200 Subject: [PATCH] Fix out of bounds read in checksum stuff --- src/engine/client/client.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp index 3fbd13151..b3207a590 100644 --- a/src/engine/client/client.cpp +++ b/src/engine/client/client.cpp @@ -4131,7 +4131,10 @@ int CClient::HandleChecksum(int Conn, CUuid Uuid, CUnpacker *pUnpacker) sha256_update(&Sha256Ctxt, &Uuid, sizeof(Uuid)); sha256_update(&Sha256Ctxt, aStartBytes, sizeof(aStartBytes)); sha256_update(&Sha256Ctxt, aEndBytes, sizeof(aEndBytes)); - sha256_update(&Sha256Ctxt, m_Checksum.m_aBytes + Start, ChecksumBytesEnd - Start); + if(Start < (int)sizeof(m_Checksum.m_aBytes)) + { + sha256_update(&Sha256Ctxt, m_Checksum.m_aBytes + Start, ChecksumBytesEnd - Start); + } if(End > (int)sizeof(m_Checksum.m_aBytes)) { unsigned char aBuf[2048];