-
Notifications
You must be signed in to change notification settings - Fork 39
Open
Description
Hi, I am scanning the futures-timer in the latest version with my own static analyzer tool.
Unsafe conversion found at: src/native/global.rs#L86
fn raw_clone(ptr: *const ()) -> RawWaker {
let me = ManuallyDrop::new(unsafe { Arc::from_raw(ptr as *const Thread) });
mem::forget(me.clone());
RawWaker::new(ptr, &VTABLE)
}
This unsound implementation would create a misalignment issues if the type size of ()
is smaller than the type size of Thread
.
This would potentially cause undefined behaviors in Rust. If we further manipulate the problematic converted types, it would potentially lead to different consequences such as access out-of-bound. I am reporting this issue for your attention.
Metadata
Metadata
Assignees
Labels
No labels