Closed
Description
Hi,
I consistently encountered this in the code I'm debugging. There is a call to RangeDetails::with_address. The returned value is complete nonsense.
When I debug it, I can see that when the save_range_details_by_address is called, it is passed a pointer to a details
struct with correct data. However when we get back to with_address, the pointer points to garbage. I can only assume that the native Gum has freed this object and don't see anything preventing it from doing so.
pub fn with_address(address: u64) -> Option<RangeDetails<'a>> {
let mut context = SaveRangeDetailsByAddressContext {
address,
details: core::ptr::null_mut(),
};
unsafe {
gum_sys::gum_process_enumerate_ranges(
gum_sys::_GumPageProtection_GUM_PAGE_NO_ACCESS as u32,
Some(save_range_details_by_address),
&mut context as *mut _ as *mut c_void,
);
}
if !context.details.is_null() {
Some(RangeDetails::from_raw(context.details))
} else {
None
}
}
Metadata
Metadata
Assignees
Labels
No labels