pub struct SafeOwnedMemZero(/* private fields */);
Expand description

Handle for zeroing owned memory. “Owned” in this context refers to memory that has been allocated and stored in some kind of char ** argument in the context of C FFI. This means that the memory has been allocated by standard C allocators and needs to be cleaned up by the caller. In the context of Rust, we would consider this owned by the current scope.

§SECURITY WARNING

Any pointer used with this must point to memory allocated by libc::malloc or any other function compatible with libc::free. If it has not been, you could cause memory corruption and security problems.

Implementations§

source§

impl SafeOwnedMemZero

source

pub unsafe fn from_ptr(ptr: *mut c_void, size: usize) -> Self

Construct a safe memory handle from a pointer and a size.

§Safety

The pointer must point to memory allocated by libc::malloc or something compatible with libc::free. See the struct-level security warning for more information. The size argument also must match the length of the allocated block or memory corruption could occur.

Trait Implementations§

source§

impl AsMut<[u8]> for SafeOwnedMemZero

source§

fn as_mut(&mut self) -> &mut [u8]

Converts this type into a mutable reference of the (usually inferred) input type.
source§

impl AsRef<[u8]> for SafeOwnedMemZero

source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl Drop for SafeOwnedMemZero

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl SafeMemzero for SafeOwnedMemZero

source§

fn safe_memzero(&mut self)

Zero the data in the buffer. To enable managed zeroing of a buffer, call this in a Drop implementation.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.