-
Notifications
You must be signed in to change notification settings - Fork 535
Open
Description
The source of unsoundness
gfx/src/backend/gl/src/queue.rs
Lines 185 to 189 in bc77309
| fn get<T>(data: &[u8], ptr: com::BufferSlice) -> &[T] { | |
| let u32_size = mem::size_of::<T>(); | |
| assert_eq!(ptr.size % u32_size as u32, 0); | |
| let raw = Self::get_raw(data, ptr); | |
| unsafe { slice::from_raw_parts(raw.as_ptr() as *const _, raw.len() / u32_size) } |
We consider that
queue::Queue::get is unsound because the program tried to cast u8 slice to f32/f64/i32 and created a unaligned pointer. The unaligned pointer was passed to slice::from_raw_parts which requires the guarantee of pointer's alignment.Metadata
Metadata
Assignees
Labels
No labels