summaryrefslogtreecommitdiff
path: root/plugins/warp/src/plugin
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/warp/src/plugin')
-rw-r--r--plugins/warp/src/plugin/debug.rs7
-rw-r--r--plugins/warp/src/plugin/ffi.rs8
-rw-r--r--plugins/warp/src/plugin/ffi/function.rs9
-rw-r--r--plugins/warp/src/plugin/function.rs5
-rw-r--r--plugins/warp/src/plugin/workflow.rs4
5 files changed, 15 insertions, 18 deletions
diff --git a/plugins/warp/src/plugin/debug.rs b/plugins/warp/src/plugin/debug.rs
index 24cdf1c3..399dba50 100644
--- a/plugins/warp/src/plugin/debug.rs
+++ b/plugins/warp/src/plugin/debug.rs
@@ -9,9 +9,10 @@ pub struct DebugFunction;
impl FunctionCommand for DebugFunction {
fn action(&self, _view: &BinaryView, func: &Function) {
- if let Ok(lifted_il) = func.lifted_il() {
- log::info!("{:#?}", build_function(func, &lifted_il, false));
- }
+ log::info!(
+ "{:#?}",
+ build_function(func, || func.lifted_il().ok(), false)
+ );
}
fn valid(&self, _view: &BinaryView, _func: &Function) -> bool {
diff --git a/plugins/warp/src/plugin/ffi.rs b/plugins/warp/src/plugin/ffi.rs
index d78ca3c5..c3a8051c 100644
--- a/plugins/warp/src/plugin/ffi.rs
+++ b/plugins/warp/src/plugin/ffi.rs
@@ -124,12 +124,12 @@ pub unsafe extern "C" fn BNWARPGetAnalysisFunctionGUID(
result: *mut BNWARPFunctionGUID,
) -> bool {
let function = unsafe { Function::from_raw(analysis_function) };
- match function.lifted_il() {
- Ok(lifted_il) => {
- *result = cached_function_guid(&function, &lifted_il);
+ match cached_function_guid(&function, || function.lifted_il().ok()) {
+ Some(guid) => {
+ *result = guid;
true
}
- Err(_) => false,
+ None => false,
}
}
diff --git a/plugins/warp/src/plugin/ffi/function.rs b/plugins/warp/src/plugin/ffi/function.rs
index 7563bd96..b37d613b 100644
--- a/plugins/warp/src/plugin/ffi/function.rs
+++ b/plugins/warp/src/plugin/ffi/function.rs
@@ -37,11 +37,10 @@ pub unsafe extern "C" fn BNWARPGetFunction(
analysis_function: *mut BNFunction,
) -> *mut BNWARPFunction {
let function = Function::from_raw(analysis_function);
- let Ok(lifted_il) = function.lifted_il() else {
- return std::ptr::null_mut();
- };
- let function = build_function(&function, &lifted_il, false);
- Arc::into_raw(Arc::new(function)) as *mut BNWARPFunction
+ match build_function(&function, || function.lifted_il().ok(), false) {
+ Some(function) => Arc::into_raw(Arc::new(function)) as *mut BNWARPFunction,
+ None => std::ptr::null_mut(),
+ }
}
#[no_mangle]
diff --git a/plugins/warp/src/plugin/function.rs b/plugins/warp/src/plugin/function.rs
index 130e8582..a4fd2c10 100644
--- a/plugins/warp/src/plugin/function.rs
+++ b/plugins/warp/src/plugin/function.rs
@@ -47,11 +47,10 @@ pub struct CopyFunctionGUID;
impl FunctionCommand for CopyFunctionGUID {
fn action(&self, _view: &BinaryView, func: &Function) {
- let Ok(lifted_il) = func.lifted_il() else {
- log::error!("Could not get lifted il for copied function");
+ let Some(guid) = cached_function_guid(func, || func.lifted_il().ok()) else {
+ log::error!("Could not get guid for copied function");
return;
};
- let guid = cached_function_guid(func, &lifted_il);
log::info!(
"Function GUID for {:?}... {}",
func.symbol().short_name(),
diff --git a/plugins/warp/src/plugin/workflow.rs b/plugins/warp/src/plugin/workflow.rs
index 735706cf..8da69342 100644
--- a/plugins/warp/src/plugin/workflow.rs
+++ b/plugins/warp/src/plugin/workflow.rs
@@ -220,9 +220,7 @@ pub fn insert_workflow() -> Result<(), ()> {
let guid_activity = |ctx: &AnalysisContext| {
let function = ctx.function();
- if let Some(lifted_il) = unsafe { ctx.lifted_il_function() } {
- cached_function_guid(&function, &lifted_il);
- }
+ cached_function_guid(&function, || unsafe { ctx.lifted_il_function() });
};
let guid_config = activity::Config::action(