about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-12-20 11:21:40 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-12-20 11:21:40 +0100
commit15f90899eb6cd227bb7eca647b90600a80c30dea (patch)
tree5a93cedc6190662bdffa035cf811f73db16a5727
parente2ce483e0de62484f762e4e85b194fc4f228de44 (diff)
downloadbox64-15f90899eb6cd227bb7eca647b90600a80c30dea.tar.gz
box64-15f90899eb6cd227bb7eca647b90600a80c30dea.zip
[BOX32] Don't abort when stack pointer is not correct on new thread, but return an error
-rwxr-xr-xsrc/libtools/threads32.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/libtools/threads32.c b/src/libtools/threads32.c
index 2378b3a6..ae406440 100755
--- a/src/libtools/threads32.c
+++ b/src/libtools/threads32.c
@@ -207,6 +207,11 @@ EXPORT int my32_pthread_create(x64emu_t *emu, void* t, void* attr, void* start_r
 		own = 1;
 	}
 
+	if((uintptr_t)stack>=0x100000000LL) {
+		if(own) munmap(stack, stacksize);
+		return EAGAIN;
+	}
+
 	emuthread_t *et = (emuthread_t*)box_calloc(1, sizeof(emuthread_t));
     x64emu_t *emuthread = NewX64Emu(my_context, (uintptr_t)start_routine, (uintptr_t)stack, stacksize, own);
 	SetupX64Emu(emuthread, emu);