Skip to content

Commit e05d865

Browse files
committed
Report unsoundness bug with concurrency in futures-intrusive
1 parent af0ee09 commit e05d865

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
```toml
2+
[advisory]
3+
id = "RUSTSEC-0000-0000"
4+
package = "futures-intrusive"
5+
date = "2020-10-31"
6+
url = "https://github.com/Matthias247/futures-intrusive/issues/53"
7+
categories = ["memory-corruption"]
8+
keywords = ["concurrency"]
9+
informational = "unsound"
10+
11+
[versions]
12+
patched = []
13+
```
14+
15+
# GenericMutexGuard allows data races of non-Sync types across threads
16+
17+
`GenericMutexGuard<T>` was given the `Sync` auto trait as long as `T` is `Send`
18+
due to its contained members. However, since the guard is supposed to represent
19+
an **acquired lock** and allows concurrent access to the underlying data from
20+
different threads, it should only be `Sync` when the underlying data is.
21+
22+
This is a soundness issue and allows data races, potentially leading to crashes
23+
and segfaults from safe Rust code.
24+
25+
The flaw was corrected by adding a `T: Send + Sync` bound for
26+
`GenericMutexGuard`'s `Sync` trait.
27+
28+
This bug is [similar to one](https://github.com/rust-lang/rust/issues/41622) in
29+
`std::sync::Mutex`.

0 commit comments

Comments
 (0)