ARefss<'a, V>
is a type that is assumed to contain objects that are Send + Sync
.
In the affected versions of this crate,
Send
/Sync
traits are unconditionally implemented for ARefss<'a, V>
.
By using the ARefss::map()
API, we can insert a !Send
or !Sync
object into ARefss<'a, V>
. After that, it is possible to create a data race to the inner object of ARefss<'a, V>
, which can lead to undefined behavior & memory corruption.
The flaw was corrected in commit 6dd7ca0 (https://github.com/diwic/reffers-rs/commit/6dd7ca0d50f2464df708975cdafcfaeeb6d41c66) by adding trait bound V: Send + Sync
to ARefss::map()
API.
{ "license": "CC0-1.0" }