Rust advisories / buttplug
Vulnerability MediumRUSTSEC-2020-0112 · buttplug
RUSTSEC-2020-0112: ButtplugFutureStateShared allows data race to (!Send|!Sync) objects
Short answerA security vulnerability in the buttplug crate: ButtplugFutureStateShared allows data race to (!Send|!Sync) objects. Medium severity (CVSS 5.9). Fixed in 1.0.4: update to a fixed version.
| Crate | buttplug |
|---|---|
| Type | Vulnerability (memory-corruption, thread-safety) |
| Affected versions | Before 1.0.4. |
| Fixed in | 1.0.4 |
| Severity | Medium, CVSS 5.9 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H |
| Published | 2020-12-18 |
| Last changed | 2023-11-08 |
| Also known as | CVE-2020-36218, GHSA-r7rv-2rph-hvhj |
What to do
- See which version you have:
cargo tree -i buttplug(it also shows which of your dependencies pulls it in). - Update within your version requirement:
cargo update -p buttplug. If the fix is a newer major or minor than your requirement allows, raise it in Cargo.toml (for examplebuttplug = "1.0.4") or update the dependency that pulls it in. - Check again with
cargo audit, or paste your Cargo.lock into our Cargo.toml checker.
Details from the advisory
ButtplugFutureStateShared<T> implements Send & Sync regardless of T.
If T: !Send for ButtplugFutureStateShared<T>, it is possible to move non-Send types across thread boundaries (e.g. T=Rc<T>) and lead to undefined behavior. If T: !Sync for ButtplugFutureStateShared<T>, it is possible to cause data race to T (e.g. T=Arc<Cell<_>>) and lead to undefined behavior.
The flaw was corrected in version 1.0.4 by removing manual implementations of Send/Sync for ButtplugFutureStateShared<T> to let rustc generate auto trait implementations with correct trait bounds on T.
References
- Package: crates.io/crates/buttplug
- Advisory: rustsec.org/advisories/RUSTSEC-2020-0112.html
- Report: github.com/buttplugio/buttplug-rs/issues/225
From the RustSec Advisory Database (CC0-1.0) via the OSV export, downloaded Oct 24, 2026. Severity score computed from the published CVSS vector.
Up next
Are you affected?Check your whole dependency treePaste Cargo.lock: every advisory, for your exact versions.Read it next →Also worth your time
Did this answer your question?