From 6d1067b91562d6c4c06528b1aa032ef14f74ba2b Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Fri, 19 Aug 2005 10:26:23 +0000 Subject: [PATCH] Make sure the string is null-terminated in memory_get_string. --- programs/winedbg/memory.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/programs/winedbg/memory.c b/programs/winedbg/memory.c index 804874ad75e..8590b218a3b 100644 --- a/programs/winedbg/memory.c +++ b/programs/winedbg/memory.c @@ -243,13 +243,19 @@ BOOL memory_get_string(struct dbg_process* pcs, void* addr, BOOL in_debuggee, if (!addr) return FALSE; if (in_debuggee) { - if (!unicode) return pcs->process_io->read(pcs->handle, addr, buffer, size, &sz); + BOOL ret; - buffW = HeapAlloc(GetProcessHeap(), 0, size * sizeof(WCHAR)); - pcs->process_io->read(pcs->handle, addr, buffW, size * sizeof(WCHAR), &sz); - WideCharToMultiByte(CP_ACP, 0, buffW, sz / sizeof(WCHAR), buffer, size, - NULL, NULL); - HeapFree(GetProcessHeap(), 0, buffW); + if (!unicode) ret = pcs->process_io->read(pcs->handle, addr, buffer, size, &sz); + else + { + buffW = HeapAlloc(GetProcessHeap(), 0, size * sizeof(WCHAR)); + ret = pcs->process_io->read(pcs->handle, addr, buffW, size * sizeof(WCHAR), &sz); + WideCharToMultiByte(CP_ACP, 0, buffW, sz / sizeof(WCHAR), buffer, size, + NULL, NULL); + HeapFree(GetProcessHeap(), 0, buffW); + } + if (size) buffer[size-1] = 0; + return ret; } else { -- 2.11.4.GIT