From d6ec92c76744cf446dd34214471c9f3773e06594 Mon Sep 17 00:00:00 2001 From: Maschell Date: Tue, 3 Jan 2023 21:52:44 +0100 Subject: [PATCH] Make sure the version of a module is checked. --- wumsloader/src/module/ModuleDataFactory.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/wumsloader/src/module/ModuleDataFactory.cpp b/wumsloader/src/module/ModuleDataFactory.cpp index cda7275..04dfc75 100644 --- a/wumsloader/src/module/ModuleDataFactory.cpp +++ b/wumsloader/src/module/ModuleDataFactory.cpp @@ -213,7 +213,8 @@ std::optional> ModuleDataFactory::load(const std::st } } - secInfo = moduleData->getSectionInfo(".wums.meta"); + bool checkedVersion = false; + secInfo = moduleData->getSectionInfo(".wums.meta"); if (secInfo && secInfo.value()->getSize() > 0) { auto *entries = (wums_entry_t *) secInfo.value()->getAddress(); if (entries != nullptr) { @@ -248,6 +249,7 @@ std::optional> ModuleDataFactory::load(const std::st moduleData->setInitBeforeRelocationDoneHook(false); } } else if (key == "wums" || key == "wum") { + checkedVersion = true; if (value != "0.3.1") { DEBUG_FUNCTION_LINE_WARN("Ignoring module - Unsupported WUMS version: %s.", value.c_str()); return std::nullopt; @@ -258,6 +260,10 @@ std::optional> ModuleDataFactory::load(const std::st } } } + if (!checkedVersion) { + DEBUG_FUNCTION_LINE_ERR("Failed to check version. Ignoring module."); + return {}; + } // Get the symbol for functions. Elf_Half n = reader.sections.size();