Singleton<T>
is meant to be a static object that can be initialized lazily. In
order to satisfy the requirement that static
items must implement Sync
,
Singleton
implemented both Sync
and Send
unconditionally.
This allows for a bug where non-Sync
types such as Cell
can be used in
singletons and cause data races in concurrent programs.
The flaw was corrected in commit b0d2bd20e
by adding trait bounds, requiring
the contaiend type to implement Sync
.
{ "nvd_published_at": "2021-08-08T06:15:00Z", "github_reviewed_at": "2021-08-18T20:14:26Z", "severity": "HIGH", "github_reviewed": true, "cwe_ids": [ "CWE-119", "CWE-362" ] }