From 90d4ccfe2a6e8cd6d7b041f9c3e14405051cfe55 Mon Sep 17 00:00:00 2001 From: Maschell Date: Fri, 13 May 2022 15:43:11 +0200 Subject: [PATCH] Add additional check to make sure to not overflow buffer --- wumsloader/src/module/ModuleDataFactory.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/wumsloader/src/module/ModuleDataFactory.cpp b/wumsloader/src/module/ModuleDataFactory.cpp index c6f763b..644d406 100644 --- a/wumsloader/src/module/ModuleDataFactory.cpp +++ b/wumsloader/src/module/ModuleDataFactory.cpp @@ -131,6 +131,11 @@ std::optional> ModuleDataFactory::load(const std::st const char *p = reader.sections[i]->get_data(); + if (destination + sectionSize > (uint32_t) data.get() + text_size + data_size) { + DEBUG_FUNCTION_LINE_ERR("Tried to overflow buffer. %08X > %08X", destination + sectionSize, (uint32_t) data.get() + text_size + data_size); + OSFatal("WUMSLoader: Tried to overflow buffer"); + } + if (psec->get_type() == SHT_NOBITS) { DEBUG_FUNCTION_LINE("memset section %s %08X to 0 (%d bytes)", psec->get_name().c_str(), destination, sectionSize); memset((void *) destination, 0, sectionSize);