about summary refs log tree commit diff stats
path: root/src/dynarec/dynablock.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-11-04 11:43:27 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-11-04 11:43:27 +0100
commit3448e941710dbf11d2772d5782a0b2d44e7892b1 (patch)
tree2c9ee9d17416e124b7baaa53eefafc2f0a0a7942 /src/dynarec/dynablock.c
parent08085be36070ba22b9e2e99529826d60d5ba149f (diff)
downloadbox64-3448e941710dbf11d2772d5782a0b2d44e7892b1.tar.gz
box64-3448e941710dbf11d2772d5782a0b2d44e7892b1.zip
Improve handling of memory protection, and excution bit
Diffstat (limited to 'src/dynarec/dynablock.c')
-rw-r--r--src/dynarec/dynablock.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/dynarec/dynablock.c b/src/dynarec/dynablock.c
index 4c703167..bfe10758 100644
--- a/src/dynarec/dynablock.c
+++ b/src/dynarec/dynablock.c
@@ -19,6 +19,7 @@
 #include "dynarec_private.h"
 #include "elfloader.h"
 #include "bridge.h"
+#include "signals.h"
 
 #include "dynarec_native.h"
 #include "native_lock.h"
@@ -198,6 +199,8 @@ static dynablock_t* internalDBGetBlock(x64emu_t* emu, uintptr_t addr, uintptr_t
 {
     if(hasAlternate((void*)addr))
         return NULL;
+    if((getProtection(addr)&(PROT_EXEC|PROT_READ))!=(PROT_EXEC|PROT_READ))  // cannot be run, get out of the Dynarec
+        return NULL;
     dynablock_t* block = getDB(addr);
     if(block || !create)
         return block;