[PATCH 03/11] dbghelp: fix two internal buffer allocations
Eric Pouech
eric.pouech at gmail.com
Mon Aug 30 02:24:17 CDT 2021
The first one is harmful (when symbol name's length is > 1000 characters),
the second one is harmless (overallocation).
Signed-off-by: Eric Pouech <eric.pouech at gmail.com>
---
dlls/dbghelp/symbol.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c
index 3fc3438eeba..8189f6a175e 100644
--- a/dlls/dbghelp/symbol.c
+++ b/dlls/dbghelp/symbol.c
@@ -1170,8 +1170,7 @@ struct sym_enumW
PSYM_ENUMERATESYMBOLS_CALLBACKW cb;
void* ctx;
PSYMBOL_INFOW sym_info;
- char buffer[sizeof(SYMBOL_INFOW) + MAX_SYM_NAME];
-
+ char buffer[sizeof(SYMBOL_INFOW) + MAX_SYM_NAME * sizeof(WCHAR)];
};
static BOOL CALLBACK sym_enumW(PSYMBOL_INFO si, ULONG size, PVOID ctx)
@@ -1438,7 +1437,7 @@ BOOL WINAPI SymFromNameW(HANDLE process, const WCHAR *name, SYMBOL_INFOW *symbol
TRACE("(%p, %s, %p)\n", process, debugstr_w(name), symbol);
- len = sizeof(*si) + symbol->MaxNameLen * sizeof(WCHAR);
+ len = sizeof(*si) + symbol->MaxNameLen;
if (!(si = HeapAlloc(GetProcessHeap(), 0, len))) return FALSE;
len = WideCharToMultiByte(CP_ACP, 0, name, -1, NULL, 0, NULL, NULL);
More information about the wine-devel
mailing list