From 27333f9ce84badbf4b97b08be8c8f9a98b10b791 Mon Sep 17 00:00:00 2001 From: Fabian Freyer Date: Mon, 18 Sep 2023 23:17:54 +0200 Subject: [PATCH] libafl_bolts fix potentially unaligned ucontexts in signal handler (#1520) When entering a signal handler, the ucontext_t is not necessarily 0x10-aligned, so we need to use read_unaligned instead of dereferencing. --- libafl_bolts/src/os/unix_signals.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libafl_bolts/src/os/unix_signals.rs b/libafl_bolts/src/os/unix_signals.rs index 6f4eb87d48..ffae70b019 100644 --- a/libafl_bolts/src/os/unix_signals.rs +++ b/libafl_bolts/src/os/unix_signals.rs @@ -390,7 +390,11 @@ unsafe fn handle_signal(sig: c_int, info: siginfo_t, void: *mut c_void) { None => return, } }; - handler.handle(*signal, info, &mut *(void as *mut ucontext_t)); + handler.handle( + *signal, + info, + &mut ptr::read_unaligned(void as *mut ucontext_t), + ); } /// Setup signal handlers in a somewhat rusty way.