about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-07-17 18:00:10 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-07-17 18:00:10 +0200
commitfd6895782fc12a949781507361198a7f9a4566b5 (patch)
tree2036ccdef9423c74593ad9839515463b8fcda486 /src
parentabdd03cdfac3f030543824756b3b21721c71a8fc (diff)
downloadbox64-fd6895782fc12a949781507361198a7f9a4566b5.tar.gz
box64-fd6895782fc12a949781507361198a7f9a4566b5.zip
[DYNAREC] Try to avoid segfault when discovering natuve function durring building of dynablock
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/dynarec_arm64_functions.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/dynarec/dynarec_arm64_functions.c b/src/dynarec/dynarec_arm64_functions.c
index d2e4493e..5a0e1796 100755
--- a/src/dynarec/dynarec_arm64_functions.c
+++ b/src/dynarec/dynarec_arm64_functions.c
@@ -25,6 +25,7 @@
 #include "dynarec_arm64.h"
 #include "dynarec_arm64_private.h"
 #include "dynarec_arm64_functions.h"
+#include "custommem.h"
 
 void arm_fstp(x64emu_t* emu, void* p)
 {
@@ -320,7 +321,7 @@ int isNativeCall(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t* calladdress, int
 #define PK(a)       *(uint8_t*)(addr+a)
 #define PK32(a)     *(int32_t*)(addr+a)
 
-    if(!addr)
+    if(!addr || !getProtection(addr))
         return 0;
     if(PK(0)==0xff && PK(1)==0x25) {            // "absolute" jump, maybe the GOT (well, RIP relative in fact)
         uintptr_t a1 = addr + 6 + (PK32(2));    // need to add a check to see if the address is from the GOT !