diff --git a/src/lib/arch/win32/ArchMiscWindows.cpp b/src/lib/arch/win32/ArchMiscWindows.cpp index 70e2bca7a..704488508 100644 --- a/src/lib/arch/win32/ArchMiscWindows.cpp +++ b/src/lib/arch/win32/ArchMiscWindows.cpp @@ -15,6 +15,7 @@ #include +#include #include #include #include @@ -409,15 +410,16 @@ HMODULE ArchMiscWindows::findLoadedModule(std::array moduleName abort(); } - std::string loadedModuleName; - for (size_t i = 0; i < (cbNeeded / sizeof(HMODULE)); ++i) { - if (!GetModuleBaseNameA(hProcess, hModules[i], loadedModuleName.data(), sizeof(loadedModuleName))) { + const auto moduleCount = std::min(cbNeeded / sizeof(HMODULE), hModules.size()); + std::array loadedModuleName; + for (size_t i = 0; i < moduleCount; ++i) { + if (!GetModuleBaseNameA(hProcess, hModules[i], loadedModuleName.data(), MAX_PATH)) { LOG_WARN("could not get base name of loaded module %d", i); continue; } for (const auto &moduleName : moduleNames) { - if (_stricmp((loadedModuleName.data()), moduleName) == 0) { + if (_stricmp(loadedModuleName.data(), moduleName) == 0) { return hModules[i]; } }