-
Notifications
You must be signed in to change notification settings - Fork 432
Open
Labels
@shinmao
At line 902, the
Description
The source of unsoundness
Hi, we found an unsound implementation in unpack which could create a misaligned pointer:
Lines 900 to 903 in 62a3019
fn unpack(data: &[u8], count: usize) -> Result<Vec<Self>> {
let tstrings =
unsafe { slice::from_raw_parts(data.as_ptr() as *const tf::TF_TString, count) };
let mut out = Vec::with_capacity(count);
At line 902, the
u8 pointer would cast to TF_TString which had stronger alignment requirements. The misaligned pointer passed to slice::from_raw_parts would break the safety guarantee. Please check and happy to have a discussion:)