Unratedcrates.ioPublished
Insufficient covariance check makes self_cell unsound
GHSA-48m6-wm5p-rr6h
- Affected
- crates.io self_cell < 0.10.3; >= 1.0.0, < 1.0.2
- Fixed in
- 1.0.20.10.3· Vendor fix available
- Issue
- All public versions prior to 1.02 used an insufficient check to ensure that users correctly marked the dependent type as either covariant or notcovariant. This allowed users to mark a dependent as covariant even though its type was not covariant but invariant, for certain invariant types involving trait object lifetimes. One example for such a dependent type is type Dependent<'a = RefCell<Box<dyn fmt::Display + 'a. Such a type allowed unsound usage in purely safe user code that leads to undefined behavior. The patched versions now produce a compile time error if such a type is marked as covariant.
Recommended action: Upgrade to 1.0.2 or 0.10.3 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.