From d75ea2d55ecd89f6e95030e996f292d655fe0e71 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Fri, 21 Aug 2026 11:35:41 -0700 Subject: [PATCH] fix incorrect module lookup on asan events; fix bad string size assumption with const string eval --- src/dbg_engine/dbg_engine_ctrl.c | 10 +--------- src/eval/eval_interpret.c | 6 ++++-- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/dbg_engine/dbg_engine_ctrl.c b/src/dbg_engine/dbg_engine_ctrl.c index 96c168fc..f7318e29 100644 --- a/src/dbg_engine/dbg_engine_ctrl.c +++ b/src/dbg_engine/dbg_engine_ctrl.c @@ -3031,15 +3031,7 @@ d_ctrl_thread__next_dmn_event(Arena *arena, DMN_CtrlCtx *ctrl_ctx, D_Msg *msg, D Access *access = access_open(); D_Handle process_handle = d_handle_from_dmn(D_MachineID_Local, ev->process); D_Entity *process = d_entity_from_handle(process_handle); - D_Entity *module = &d_entity_nil; - for(D_Entity *child = process->first; child != &d_entity_nil; child = child->next) - { - if(child->kind == D_EntityKind_Module) - { - module = child; - break; - } - } + D_Entity *module = d_module_from_process_vaddr(process, ev->instruction_pointer); if(module != &d_entity_nil) { // rjf: determine base address of asan shadow space diff --git a/src/eval/eval_interpret.c b/src/eval/eval_interpret.c index e314ac10..5568eb5b 100644 --- a/src/eval/eval_interpret.c +++ b/src/eval/eval_interpret.c @@ -402,8 +402,10 @@ e_interpret(String8 bytecode) case RDI_EvalOp_ConstString: { - MemoryCopy(&nval, ptr, imm.u64); - ptr += imm.u64; + U64 src_size = imm.u64; + U64 dst_size = Min(sizeof(nval), src_size); + MemoryCopy(&nval, ptr, dst_size); + ptr += src_size; }break; case RDI_EvalOp_Abs: