From e012d6cfca86c84e8224e95449d2dfb78d5927f0 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Tue, 5 Mar 2024 17:37:56 +0100 Subject: [PATCH] Fix altstack calculation typo. --- src/context/signal.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/context/signal.rs b/src/context/signal.rs index 729aa3d686..9848a49f1c 100644 --- a/src/context/signal.rs +++ b/src/context/signal.rs @@ -151,10 +151,10 @@ pub fn signal_handler() { // TODO: 16 bytes alignment is sufficient unless XSAVE is enabled. const STACK_ALIGN: usize = 64; - let new_sp_unless_altstack = (regs.stack_pointer() - STACK_ADJUST) & usize::wrapping_neg(STACK_ALIGN); + let new_sp_unless_altstack = (regs.stack_pointer() - STACK_ADJUST) / STACK_ALIGN * STACK_ALIGN; let new_sp = match handler.altstack { - Some(altstack) if !(altstack.base.get()..altstack.base.get() + altstack.base.get() + altstack.len.get()).contains(®s.stack_pointer()) => altstack.base.get() + altstack.len.get(), + Some(altstack) if !(altstack.base.get()..altstack.base.get() + altstack.len.get()).contains(®s.stack_pointer()) => altstack.base.get() + altstack.len.get(), _ => new_sp_unless_altstack, } - size_of::();