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,
"severity": "HIGH",
"github_reviewed_at": "2021-08-06T18:04:55Z",
"github_reviewed": true,
"cwe_ids": [
"CWE-362"
]
}