From be0b6ab35e8535ffd9868a7a43e73cfd1f60ade0 Mon Sep 17 00:00:00 2001 From: sowle Date: Fri, 30 May 2025 14:45:24 +0200 Subject: [PATCH] callstack_helper: fixed a potential issue in get_mod_info::operator() --- src/common/callstack_helper.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/common/callstack_helper.cpp b/src/common/callstack_helper.cpp index 865817e0..939dc929 100644 --- a/src/common/callstack_helper.cpp +++ b/src/common/callstack_helper.cpp @@ -43,20 +43,19 @@ namespace module_data ret{}; try { - char temp[buffer_length]; - MODULEINFO mi; + char temp[buffer_length] = {0}; + MODULEINFO mi{}; GetModuleInformation(process, module, &mi, sizeof(mi)); ret.base_address = mi.lpBaseOfDll; ret.load_size = mi.SizeOfImage; - GetModuleFileNameEx(process, module, temp, sizeof(temp)); - ret.image_name = temp; - GetModuleBaseName(process, module, temp, sizeof(temp)); - ret.module_name = temp; - std::vector img(ret.image_name.begin(), ret.image_name.end()); - std::vector mod(ret.module_name.begin(), ret.module_name.end()); - SymLoadModule64(process, 0, &img[0], &mod[0], (DWORD64)ret.base_address, ret.load_size); + if (GetModuleFileNameEx(process, module, temp, sizeof(temp))) + ret.image_name = temp; + if (GetModuleBaseName(process, module, temp, sizeof(temp))) + ret.module_name = temp; + + SymLoadModule64(process, 0, ret.image_name.c_str(), ret.module_name.c_str(), (DWORD64)ret.base_address, ret.load_size); } catch(std::exception& e) {