From c51d6579e4c15820d383b1f84247f9c2b2b3780c Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Thu, 1 Oct 2009 03:03:16 +0000 Subject: [PATCH] Fixed incorrect uses of user_{strl,mem}cpy() in the kernel debugger. This could break stack traces. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33381 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/arch/x86/arch_debug.cpp | 2 +- src/system/kernel/elf.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/system/kernel/arch/x86/arch_debug.cpp b/src/system/kernel/arch/x86/arch_debug.cpp index 5b479c2a56..b7bb283f28 100644 --- a/src/system/kernel/arch/x86/arch_debug.cpp +++ b/src/system/kernel/arch/x86/arch_debug.cpp @@ -239,7 +239,7 @@ print_demangled_call(const char* image, const char* symbol, addr_t args, if (type == B_STRING_TYPE) { if (value == 0) kprintf(" \33[31m\"\"\33[0m"); - else if (user_strlcpy(buffer, (char*)value, kBufferSize) < B_OK) + else if (debug_strlcpy(buffer, (char*)value, kBufferSize) < B_OK) kprintf(" \33[31m\"\"\33[0m"); else kprintf(" \33[36m\"%s\"\33[0m", buffer); diff --git a/src/system/kernel/elf.cpp b/src/system/kernel/elf.cpp index 2b26cefeaf..4c4b0f9028 100644 --- a/src/system/kernel/elf.cpp +++ b/src/system/kernel/elf.cpp @@ -1465,6 +1465,8 @@ public: if (!IS_USER_ADDRESS(address)) return false; + if (debug_debugger_running()) + return debug_strlcpy(buffer, address, bufferSize) >= 0; return user_strlcpy(buffer, address, bufferSize) >= 0; } @@ -1486,6 +1488,8 @@ UserSymbolLookup::_Read(const T* address, T& data) if (!IS_USER_ADDRESS(address)) return false; + if (debug_debugger_running()) + return debug_memcpy(&data, address, sizeof(T)) == B_OK; return user_memcpy(&data, address, sizeof(T)) == B_OK; }