Files
advisory-db/crates/buttplug/RUSTSEC-2020-0112.md
2021-01-30 23:02:50 -05:00

22 lines
965 B
Markdown

```toml
[advisory]
id = "RUSTSEC-2020-0112"
package = "buttplug"
date = "2020-12-18"
url = "https://github.com/buttplugio/buttplug-rs/issues/225"
categories = ["memory-corruption", "thread-safety"]
[versions]
# Versions which include fixes for this vulnerability
patched = [">= 1.0.4"]
```
# ButtplugFutureStateShared allows data race to (!Send|!Sync) objects
`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`.