- Reported
-
- Issued
-
- Package
-
qcell
(crates.io)
- Type
-
INFO
Unsound
- Keywords
-
#unsound
- Aliases
-
- References
-
- Patched
-
Description
This is impossible to do by accident, but by carefully constructing
marker types to be covariant, a malicious coder can cheat the
singleton check in TCellOwner
and TLCellOwner
, giving unsound
access to cell memory. This could take the form of getting two
mutable references to the same memory, or a mutable reference and an
immutable reference.
The fix is for the crate to internally force the marker type to be
invariant. This blocks the conversion between covariant types which
Rust normally allows.
Advisory available under CC0-1.0
license.