On Mar 16, 2022, at 12:20 AM, Eric Pouech <eric.pouech@orange.fr> wrote:
Le 15/03/2022 ������ 20:05, Brendan Shanks a ������crit������:
Signed-off-by: Brendan Shanks <bshanks@codeweavers.com>
---
������programs/winedbg/gdbproxy.c | 9 +++++----
������1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/programs/winedbg/gdbproxy.c b/programs/winedbg/gdbproxy.c
index 0268a288481..bcde120adeb 100644
--- a/programs/winedbg/gdbproxy.c
+++ b/programs/winedbg/gdbproxy.c
@@ -482,7 +482,6 @@ static BOOL handle_exception(struct gdb_context* gdbctx, EXCEPTION_DEBUG_INFO* e
������������������������������{
������������������������������������������������������const THREADNAME_INFO *threadname = (const THREADNAME_INFO *)rec->ExceptionInformation;
������������������������������������������������������struct dbg_thread *thread;
- ������������������������������������������char name[9];
������������������������������������������������������SIZE_T read;
������������������������������������������������������������������if (threadname->dwType != 0x1000)
@@ -494,10 +493,12 @@ static BOOL handle_exception(struct gdb_context* gdbctx, EXCEPTION_DEBUG_INFO* e
������������������������������������������������������if (thread)
������������������������������������������������������{
������������������������������������������������������������������������������if (gdbctx->process->process_io->read( gdbctx->process->handle,
- ������������������������������������������������������������������������������������������threadname->szName, name, sizeof(name), &read) && read == sizeof(name))
+ ������������������������������������������������������������������������������������������threadname->szName, thread->name, sizeof(thread->name), &read) &&
+ ������������������������������������������������������������������������������������������read == sizeof(thread->name))
it looks a bit strange to me that we can always expect being able to read sizeof(thread->name) here...
using existing memory_get_string helper might be a better idea
Thanks, I hadn���������t seen that function before, I���������ll use it. I think the end result will be the same though, since memory_get_string() uses the same read() that's implemented with ReadProcessMemory(), which doesn���������t do partial reads.ReadProcessMemory() could fail if sizeof(thread->name) would overflow into an inaccessible page, but for a convenience feature like thread names (and this is the old/deprecated way of setting them) I���������m not sure it���������s worth handling that rare case.
sounds reasonable (we could evolve memory_get_string if that ever happens for any kind of string)
A+