From decec260b2bccc4f3d99eaef0bc68c55bbf2db28 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sat, 14 Jun 2025 11:31:18 +0200 Subject: [DYNAREC] Make sure a dynablock does not exit a mmap backed by a file address range --- src/dynarec/dynarec_native_pass.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/dynarec/dynarec_native_pass.c') diff --git a/src/dynarec/dynarec_native_pass.c b/src/dynarec/dynarec_native_pass.c index 1620927a..f7d02f13 100644 --- a/src/dynarec/dynarec_native_pass.c +++ b/src/dynarec/dynarec_native_pass.c @@ -69,7 +69,8 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int if(cur_page != ((addr)&~(box64_pagesize-1))) { cur_page = (addr)&~(box64_pagesize-1); uint32_t prot = getProtection(addr); - if(!(prot&PROT_READ) || checkInHotPage(addr)) { + if(!(prot&PROT_READ) || checkInHotPage(addr) || (addr>dyn->end)) { + dynarec_log(LOG_INFO, "Stopping dynablock because of protection, hotpage or mmap crossing at %p -> %p inst=%d\n", (void*)dyn->start, (void*)addr, ninst); need_epilog = 1; break; } -- cgit 1.4.1