GitHub Advisoryadvisory · crates.io

GHSA-8892-84wf-cg8f SyncChannel<T> can move 'T: !Send' to other threads

HIGH Published 2021-08-25 Modified 2023-06-13 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

References