From 2b064f85bb0aa1dc52e39a963b3615e0f663eb77 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 10 Jan 2025 02:06:14 -0500 Subject: [PATCH] SafeReader: fix exploit when using negative length issue #2316 --- src/engine/safeReader.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/engine/safeReader.cpp b/src/engine/safeReader.cpp index 98f06f417..ffd1db6f6 100644 --- a/src/engine/safeReader.cpp +++ b/src/engine/safeReader.cpp @@ -61,6 +61,7 @@ int SafeReader::read(void* where, size_t count) { #endif if (count==0) return 0; if (curSeek+count>len) throw EndOfFileException(this,len); + if (curSeek+countlen) throw EndOfFileException(this,len); + if (curSeek+1len) throw EndOfFileException(this,len); + if (curSeek+2len) throw EndOfFileException(this,len); + if (curSeek+2len) throw EndOfFileException(this,len); + if (curSeek+4len) throw EndOfFileException(this,len); + if (curSeek+4len) throw EndOfFileException(this,len); + if (curSeek+8len) throw EndOfFileException(this,len); + if (curSeek+4len) throw EndOfFileException(this,len); + if (curSeek+8len) throw EndOfFileException(this,len); + if (curSeek+2len) throw EndOfFileException(this,len); + if (curSeek+2len) throw EndOfFileException(this,len); + if (curSeek+4len) throw EndOfFileException(this,len); + if (curSeek+4len) throw EndOfFileException(this,len); + if (curSeek+8len) throw EndOfFileException(this,len); + if (curSeek+4len) throw EndOfFileException(this,len); + if (curSeek+8