The source of unsoundness
Hi, we found an unsound implementation in unpack which could create a misaligned pointer:
|
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:)
The source of unsoundness
Hi, we found an unsound implementation in
unpackwhich could create a misaligned pointer:rust/src/lib.rs
Lines 900 to 903 in 62a3019
At line 902, the
u8pointer would cast toTF_TStringwhich had stronger alignment requirements. The misaligned pointer passed toslice::from_raw_partswould break the safety guarantee. Please check and happy to have a discussion:)