HistoryEditJSON (OSV)

RUSTSEC-2025-0107

Uninitialized memory exposure in any_as_u8_slice

Reported
Issued
Package
borrowck_sacrifices (crates.io)
Type
INFO Unsound
Categories
Keywords
#uninitialized-memory #soundness
References
Patched
  • >=0.2.0
Affected Functions
Version
borrowck_sacrifices::unsafe_casts::any_as_u8_slice
  • <0.2.0

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.