- Reported
-
- Issued
-
- Package
-
borrowck_sacrifices
(crates.io)
- Type
-
INFO
Unsound
- Categories
-
- Keywords
-
#uninitialized-memory
#soundness
- References
-
- Patched
-
- Affected Functions
- Version
borrowck_sacrifices::unsafe_casts::any_as_u8_slice
-
Description
The safe function any_as_u8_slice
can create byte slices that reference uninitialized memory when used with types containing padding bytes.
The function uses slice::from_raw_parts
to create a &[u8]
covering the entire size of a type, including padding bytes. According to Rust's documentation, from_raw_parts
requires all bytes to be properly initialized, but padding bytes in structs are not guaranteed to be initialized. This violates the safety contract and causes undefined behavior.
Advisory available under CC0-1.0
license.