From 5a1b858c0e94afb6e32cb87a285c6107d0e00944 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 22 Aug 2023 22:59:29 +0200 Subject: [PATCH] - added some safety checks for reading empty lumps into a std::vector. These can trip the internal safety checks, even though nothing gets read in. --- src/common/filesystem/include/fs_files.h | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/common/filesystem/include/fs_files.h b/src/common/filesystem/include/fs_files.h index c3404a568..8e8f6927f 100644 --- a/src/common/filesystem/include/fs_files.h +++ b/src/common/filesystem/include/fs_files.h @@ -194,8 +194,11 @@ public: std::vector Read(size_t len) { std::vector buffer(len); - Size length = mReader->Read(&buffer[0], (long)len); - buffer.resize((size_t)length); + if (len > 0) + { + Size length = mReader->Read(&buffer[0], (long)len); + buffer.resize((size_t)length); + } return buffer; } @@ -208,9 +211,13 @@ public: { auto len = GetLength(); std::vector buffer(len + padding); - Size length = mReader->Read(&buffer[0], (long)len); - if (length < len) buffer.clear(); - else memset(buffer.data() + len, 0, padding); + if (len > 0) + { + Size length = mReader->Read(&buffer[0], (long)len); + if (length < len) buffer.clear(); + else memset(buffer.data() + len, 0, padding); + } + else buffer[0] = 0; return buffer; }