From cb326b45064ade9228d219895ef64e36b263a1e5 Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Fri, 9 Aug 2024 13:27:40 -0700 Subject: Add get_relocation_ranges to rust api --- rust/src/binaryview.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'rust/src/binaryview.rs') diff --git a/rust/src/binaryview.rs b/rust/src/binaryview.rs index b20bc59c..ed35bc76 100644 --- a/rust/src/binaryview.rs +++ b/rust/src/binaryview.rs @@ -1371,6 +1371,25 @@ pub trait BinaryViewExt: BinaryViewBase { } } + fn get_relocation_ranges(&self) -> Vec> { + let ranges = unsafe { + let mut count = 0; + let reloc_ranges_ptr = BNGetRelocationRanges(self.as_ref().handle, &mut count); + let ranges = std::slice::from_raw_parts(reloc_ranges_ptr, count).clone(); + BNFreeRelocationRanges(reloc_ranges_ptr); + ranges + }; + + // TODO: impl From BNRange for Range? + ranges + .iter() + .map(|range| Range { + start: range.start, + end: range.end, + }) + .collect() + } + fn component_by_guid(&self, guid: S) -> Option { let name = guid.into_bytes_with_nul(); let result = unsafe { -- cgit v1.3.1