From 95fe4970564dd20f44dd51e714b5dbfd88b84ff3 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Thu, 14 Nov 2024 13:08:17 -0800 Subject: [PATCH] fix incorrect advance logic on invalid page reads in cached process memory reading path --- src/ctrl/ctrl_core.c | 8 ++++---- src/raddbg/raddbg_core.c | 6 +++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/ctrl/ctrl_core.c b/src/ctrl/ctrl_core.c index ac3891fa..d791b475 100644 --- a/src/ctrl/ctrl_core.c +++ b/src/ctrl/ctrl_core.c @@ -1615,12 +1615,12 @@ ctrl_query_cached_data_from_process_vaddr_range(Arena *arena, CTRL_Handle proces } // rjf: increment past this chunk - write_off += in_range_data.size; - if(data.size < page_size) + U64 bytes_to_skip = page_size; + if(page_idx == 0 && range.min > data_vaddr_range.min) { - U64 missed_byte_count = page_size-data.size; - write_off += missed_byte_count; + bytes_to_skip -= (range.min-data_vaddr_range.min); } + write_off += bytes_to_skip; } } diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index 495fedc4..53264891 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -3822,10 +3822,14 @@ rd_window_frame(RD_Window *ws) { ui_labelf("Symbols successfully loaded from %S", dbgi_key.path); } - else + else if(dbgi_key.path.size != 0) { ui_labelf("Symbols not found at %S", dbgi_key.path); } + else if(dbgi_key.path.size == 0) + { + ui_labelf("Symbol information not found in module file"); + } di_scope_close(di_scope); }