From e76570ad7b1fbb97f3869a2266fcbaf79d94c8de Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sun, 24 Aug 2025 12:00:24 +0200 Subject: [BOX32] Sligtly safer handling of 32bits signals --- src/libtools/signal32.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/libtools') diff --git a/src/libtools/signal32.c b/src/libtools/signal32.c index 11dd55e6..cd5f054d 100644 --- a/src/libtools/signal32.c +++ b/src/libtools/signal32.c @@ -467,7 +467,7 @@ void convert_siginfo_to_32(void* d, void* s, int sig) memcpy(dst, src, sizeof(my_siginfo32_t)); if(sig==X64_SIGILL || sig==X64_SIGFPE || sig==X64_SIGSEGV || sig==X64_SIGBUS) - dst->_sifields._sigfault.__si_addr = to_ptrv(src->si_addr); + dst->_sifields._sigfault.__si_addr = to_ptr(((uintptr_t)src->si_addr)&0xffffffff); // in case addr is not a 32bits value... if(sig==X64_SIGCHLD) { dst->_sifields._sigchld.__si_pid = src->si_pid; dst->_sifields._sigchld.__si_uid = src->si_uid; @@ -494,7 +494,7 @@ void my_sigactionhandler_oldcode_32(x64emu_t* emu, int32_t sig, int simple, sigi // get that actual ESP first! if(!emu) emu = thread_get_emu(); - uintptr_t frame = R_RSP; + uintptr_t frame = R_ESP; #if defined(DYNAREC) dynablock_t* db = (dynablock_t*)cur_db;//FindDynablockFromNativeAddress(pc); ucontext_t *p = (ucontext_t *)ucntx; -- cgit 1.4.1