From cf29ff14bffc2966e8f1ef926369b992c63f6b84 Mon Sep 17 00:00:00 2001 From: xoffio Date: Sun, 5 Apr 2026 22:03:22 -0400 Subject: [PATCH] Fix access violation in Handler --- frida/src/script.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/frida/src/script.rs b/frida/src/script.rs index 939c998..b618cf2 100644 --- a/frida/src/script.rs +++ b/frida/src/script.rs @@ -81,7 +81,7 @@ pub enum MessageLogLevel { Error, } -unsafe extern "C" fn call_on_message( +unsafe extern "C" fn call_on_message( _script_ptr: *mut _FridaScript, message: *const i8, data: *const frida_sys::_GBytes, @@ -106,7 +106,11 @@ unsafe extern "C" fn call_on_message( on_message(callback_handler.as_mut().unwrap(), formatted_msg); } _ => { - let handler: &mut I = &mut *(user_data as *mut I); + let callback_handler: &mut CallbackHandler = &mut *(user_data as *mut CallbackHandler); + let handler = match callback_handler.script_handler.as_mut() { + Some(h) => h, + None => return, + }; // Retrieve extra message data, if any. if data.is_null() { @@ -239,7 +243,7 @@ impl<'a> Script<'a> { let callback = Some(std::mem::transmute::< *mut std::ffi::c_void, unsafe extern "C" fn(), - >(call_on_message:: as *mut c_void)); + >(call_on_message as *mut c_void)); frida_sys::g_signal_connect_data( self.script_ptr as _,