pub unsafe trait ArchiveContext<E = <Self as Fallible>::Error> {
// Required methods
fn check_subtree_ptr(
&mut self,
ptr: *const u8,
layout: &Layout,
) -> Result<(), E>;
unsafe fn push_subtree_range(
&mut self,
root: *const u8,
end: *const u8,
) -> Result<Range<usize>, E>;
unsafe fn pop_subtree_range(&mut self, range: Range<usize>) -> Result<(), E>;
}Expand description
A context that can validate nonlocal archive memory.
§Safety
check_subtree_ptr must only return true if ptr is located entirely
within the subtree range and is safe to dereference.
Required Methods§
Sourcefn check_subtree_ptr(
&mut self,
ptr: *const u8,
layout: &Layout,
) -> Result<(), E>
fn check_subtree_ptr( &mut self, ptr: *const u8, layout: &Layout, ) -> Result<(), E>
Checks that the given data address and layout is located completely within the subtree range.
Sourceunsafe fn push_subtree_range(
&mut self,
root: *const u8,
end: *const u8,
) -> Result<Range<usize>, E>
unsafe fn push_subtree_range( &mut self, root: *const u8, end: *const u8, ) -> Result<Range<usize>, E>
Pushes a new subtree range onto the validator and starts validating it.
After calling push_subtree_range, the validator will have a subtree
range starting at the original start and ending at root. After popping
the returned range, the validator will have a subtree range starting at
end and ending at the original end.
§Safety
root and end must be located inside the archive.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".