Unratedcrates.ioPublished
Safe ErrorRegistry APIs can cause undefined behavior
GHSA-7hc7-h3f2-r4j6
- Affected
- crates.io dcrypt-api >= 0.0.0-0, < 2.0.0
- Fixed in
- 2.0.0· Vendor fix available
- Issue
- All published versions of `dcrypt-api` before 2.0.0 exposed safe `ErrorRegistry` operations that could trigger undefined behavior when the default `std` feature was enabled. Stored `Box ` values were erased to raw pointers and later deallocated as `Box `. The `get_error ` operation also performed an unchecked cast to a caller-selected type. Finally, concurrent replacement or clearing could free a value while another thread cloned it. Ordinary safe Rust could therefore cause mismatched deallocation, type confusion, and use-after-free. Crates that re-exported this API are affected transitively. Version 2.0.0 replaces the raw pointers with owned `Box ` values behind a mutex, performs checked downcasts, and uses a mutation generation so concurrent stores and clears win safely. There is no reliable workaround while calling the affected registry API. Upgrade to 2.0.0 or later and avoid process-global error state where possible.
Recommended action: Upgrade to 2.0.0 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.