aligned_ptr

Crates.ioaligned_ptr
lib.rsaligned_ptr
version0.1.0
sourcesrc
created_at2021-06-09 14:47:26.390813
updated_at2021-06-09 14:47:26.390813
descriptionWrappers of functions defined in core::ptr and core::slice modules with alignment and null checks
homepage
repositoryhttps://github.com/toku-sa-n/aligned_ptr
max_upload_size
id408186
size49,771
Hiroki Tokunaga (toku-sa-n)

documentation

README

aligned_ptr

A Rust library that ensures a pointer is aligned correctly before dereferencing it.

This library contains unsafe functions defined in core::ptr and core::slice (except read_unaligned and write_unaligned). All functions defined in this crate check whether the passed pointers are aligned correctly and not null.

This crate is intended to prevent from dereferencing to the unaligned address. For example the below code example panics because p points to an unaligned address. If we import core::ptr instead of aligned_ptr::ptr, this code may run successfully. However, reading a value from unaligned pointer causes undefined behaviors (except read_unaligned).

use aligned_ptr::ptr;

fn main() {
    let x = 0xdeadbeaf_u32;
    let p = (&x as *const u32 as usize + 1) as *const u16;

    unsafe { ptr::read(p) };
}

This crate supports the no_std environment.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Commit count: 35

cargo fmt