From 3355345145771291936738938721961916331716 Mon Sep 17 00:00:00 2001 From: Glenn Smith Date: Thu, 6 Feb 2025 15:00:04 -0500 Subject: Add After variants for looking up variables at instructions Fixes #6397 --- rust/src/function.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'rust/src/function.rs') diff --git a/rust/src/function.rs b/rust/src/function.rs index f122aeff..b438520a 100644 --- a/rust/src/function.rs +++ b/rust/src/function.rs @@ -1944,6 +1944,35 @@ impl Function { Some((var, name, var_type)) } + pub fn stack_var_at_frame_offset_after_instruction( + &self, + addr: u64, + offset: i64, + arch: Option, + ) -> Option<(Variable, BnString, Conf>)> { + let arch = arch.unwrap_or_else(|| self.arch()); + let mut found_value = BNVariableNameAndType::default(); + let found = unsafe { + BNGetStackVariableAtFrameOffsetAfterInstruction( + self.handle, + arch.handle, + addr, + offset, + &mut found_value, + ) + }; + if !found { + return None; + } + let var = Variable::from(found_value.var); + let name = unsafe { BnString::from_raw(found_value.name) }; + let var_type = Conf::new( + unsafe { Type::ref_from_raw(found_value.type_) }, + found_value.typeConfidence, + ); + Some((var, name, var_type)) + } + pub fn stack_variables_referenced_by( &self, addr: u64, -- cgit v1.3.1