- 
                Notifications
    You must be signed in to change notification settings 
- Fork 430
Open
Labels
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:)