Affected versions of this crate unconditionally implement Send/Sync for SyncChannel<T>
. SyncChannel<T>
doesn't provide access to &T
but merely serves as a channel that consumes and returns owned T
. Users can create UB in safe Rust by sending T: !Send
to other threads with SyncChannel::send/recv
APIs. Using T = Arc<Cell<_>
allows to create data races (which can lead to memory corruption), and using T = MutexGuard<T>
allows to unlock a mutex from a thread that didn't lock the mutex.
{ "nvd_published_at": null, "cwe_ids": [ "CWE-362" ], "severity": "HIGH", "github_reviewed": true, "github_reviewed_at": "2021-08-06T18:04:55Z" }