Skip to content

Commit e3d59cc

Browse files
committed
More rust cleanup
- Added main thread handler api - Register a headless main thread handler by default in initialization - Refactor QualifiedName to be properly owned - Loosened some type constraints on some apis involving QualifiedName - Fixed some apis that were crashing due to incorrect param types - Removed extern crate cruft for log crate - Simplified headless initialization using more wrapper apis - Fixed segments leaking because of no ref wrapper, see BinaryViewExt::segment_at - Added rstest to manage headless init in unit tests - Added some more unit tests - Refactored demangler api to be more ergonomic - Fixed minidump plugin not building
1 parent 43e5fb7 commit e3d59cc

30 files changed

+1220
-909
lines changed

plugins/minidump/src/command.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use binaryninja::binaryview::{BinaryView, BinaryViewBase, BinaryViewExt};
77

88
pub fn print_memory_information(bv: &BinaryView) {
99
debug!("Printing memory information");
10-
if let Ok(minidump_bv) = bv.parent_view() {
10+
if let Some(minidump_bv) = bv.parent_view() {
1111
if let Ok(read_buffer) = minidump_bv.read_buffer(0, minidump_bv.len()) {
1212
if let Ok(minidump_obj) = Minidump::read(read_buffer.get_data()) {
1313
if let Ok(memory_info_list) = minidump_obj.get_stream::<MinidumpMemoryInfoList>() {

plugins/minidump/src/view.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ impl MinidumpBinaryView {
116116
}
117117

118118
fn init(&self) -> BinaryViewResult<()> {
119-
let parent_view = self.parent_view()?;
119+
let parent_view = self.parent_view().ok_or(())?;
120120
let read_buffer = parent_view.read_buffer(0, parent_view.len())?;
121121

122122
if let Ok(minidump_obj) = Minidump::read(read_buffer.get_data()) {

rust/Cargo.lock

Lines changed: 104 additions & 67 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ rayon = { version = "1.8", optional = true }
1616
binaryninjacore-sys = { path = "binaryninjacore-sys" }
1717

1818
[dev-dependencies]
19-
rstest = "0.23.0"
19+
rstest = "0.24.0"
20+
tempfile = "3"

rust/examples/demangler.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ impl CustomDemangler for TestDemangler {
1616
_arch: &CoreArchitecture,
1717
name: &str,
1818
_view: Option<Ref<BinaryView>>,
19-
) -> Result<(Option<Ref<Type>>, QualifiedName), ()> {
19+
) -> Option<(QualifiedName, Option<Ref<Type>>)> {
2020
match name {
21-
"test_name" => Ok((Some(Type::bool()), QualifiedName::from(vec!["test_name"]))),
22-
"test_name2" => Ok((None, QualifiedName::from(vec!["test_name2", "aaa"]))),
23-
_ => Err(()),
21+
"test_name" => Some((QualifiedName::from(vec!["test_name"]), Some(Type::bool()))),
22+
"test_name2" => Some((QualifiedName::from(vec!["test_name2", "aaa"]), None)),
23+
_ => None,
2424
}
2525
}
2626
}

rust/src/architecture.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2588,7 +2588,7 @@ where
25882588
return expr.index.0;
25892589
}
25902590
} else {
2591-
warn!(
2591+
log::warn!(
25922592
"unable to unpack flag write op: {:?} with {} operands",
25932593
op,
25942594
operands.len()

0 commit comments

Comments
 (0)