GitHub Advisoryadvisory · crates.io
GHSA-8892-84wf-cg8f SyncChannel<T> can move 'T: !Send' to other threads
HIGH
Official page ↗
- Ecosystem
- crates.io
- Packages
- signal-simple
- Severity
- High
- CVSS vector
- CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
- Weaknesses
- CWE-362
- Reviewed
- 2021-08-06
Affected packages
• crates.io signal-simple: <= 0.1.1 (no fix yet)
Description
Affected versions of this crate unconditionally implement Send/Sync for `SyncChannel`. `SyncChannel` 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` allows to create data races (which can lead to memory corruption), and using `T = MutexGuard` allows to unlock a mutex from a thread that didn't lock the mutex.
Related
Weakness · CWE (1)
- CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization weakness