diff options
| author | Mason Reed <mason@vector35.com> | 2024-10-24 19:17:11 -0400 |
|---|---|---|
| committer | Mason Reed <mason@vector35.com> | 2024-10-24 19:17:11 -0400 |
| commit | f9ff195350d6dc0bf19627cf1f19e36b20890a31 (patch) | |
| tree | ca6f7f604146ea2efe96d93f439d8f9630c8df45 /plugins/warp/src/plugin | |
| parent | e151425087b6c0ee8c4d099bfc2d6d1268201db0 (diff) | |
Make WARP function guid generation infallible
Diffstat (limited to 'plugins/warp/src/plugin')
| -rw-r--r-- | plugins/warp/src/plugin/apply.rs | 2 | ||||
| -rw-r--r-- | plugins/warp/src/plugin/copy.rs | 22 | ||||
| -rw-r--r-- | plugins/warp/src/plugin/create.rs | 10 | ||||
| -rw-r--r-- | plugins/warp/src/plugin/find.rs | 2 |
4 files changed, 15 insertions, 21 deletions
diff --git a/plugins/warp/src/plugin/apply.rs b/plugins/warp/src/plugin/apply.rs index 56c09d77..78cb3be8 100644 --- a/plugins/warp/src/plugin/apply.rs +++ b/plugins/warp/src/plugin/apply.rs @@ -60,7 +60,7 @@ impl Command for ApplySignatureFile { .par_iter() .filter_map(|func| { let llil = func.low_level_il_if_available()?; - let pattern = cached_function_guid(&func, &llil)?; + let pattern = cached_function_guid(&func, &llil); Some((func, data_functions.get(&pattern)?)) }) .filter(|(_, sig)| sig.len() == 1) diff --git a/plugins/warp/src/plugin/copy.rs b/plugins/warp/src/plugin/copy.rs index ee91fb4a..d539a430 100644 --- a/plugins/warp/src/plugin/copy.rs +++ b/plugins/warp/src/plugin/copy.rs @@ -12,20 +12,14 @@ impl FunctionCommand for CopyFunctionGUID { log::error!("Could not get low level il for copied function"); return; }; - if let Some(guid) = cached_function_guid(func, &llil) { - log::info!( - "Function GUID for {}... {}", - func.symbol().short_name().to_string(), - guid - ); - if let Ok(mut clipboard) = arboard::Clipboard::new() { - let _ = clipboard.set_text(guid.to_string()); - } - } else { - log::error!( - "Failed to create GUID for function... 0x{:0x}", - func.start() - ); + let guid = cached_function_guid(func, &llil); + log::info!( + "Function GUID for {}... {}", + func.symbol().short_name().to_string(), + guid + ); + if let Ok(mut clipboard) = arboard::Clipboard::new() { + let _ = clipboard.set_text(guid.to_string()); } } diff --git a/plugins/warp/src/plugin/create.rs b/plugins/warp/src/plugin/create.rs index 2b1ad60e..b404ae1c 100644 --- a/plugins/warp/src/plugin/create.rs +++ b/plugins/warp/src/plugin/create.rs @@ -31,11 +31,11 @@ impl Command for CreateSignatureFile { let start = Instant::now(); let mut data = warp::signature::Data::default(); - data.functions.par_extend( - view.functions() - .par_iter() - .filter_map(|func| cached_function(&func, func.low_level_il().ok()?.as_ref())), - ); + data.functions + .par_extend(view.functions().par_iter().filter_map(|func| { + let llil = func.low_level_il().ok()?; + Some(cached_function(&func, &llil)) + })); data.types.extend(view.types().iter().map(|ty| { let ref_ty = ty.type_object().to_owned(); ComputedType::new(from_bn_type(&view, ref_ty, u8::MAX)) diff --git a/plugins/warp/src/plugin/find.rs b/plugins/warp/src/plugin/find.rs index 7f089c2f..6d6c5bc1 100644 --- a/plugins/warp/src/plugin/find.rs +++ b/plugins/warp/src/plugin/find.rs @@ -37,7 +37,7 @@ impl Command for FindFunctionFromGUID { .filter_map(|func| { Some(( func.clone(), - cached_function_guid(&func, func.low_level_il_if_available()?.as_ref())?, + cached_function_guid(&func, func.low_level_il_if_available()?.as_ref()), )) }) .filter(|(_func, guid)| guid.eq(&searched_guid)) |
