RUSTSEC-2026-0128
Double-free and use-after-free in `Keys::next()`
Keys::next() uses ptr::read to move out the Option<V> by value, which
drops the contained V when V is non-Copy (e.g. String). This leaves a
dangling value in the map's storage slot. Subsequent get() operations on
that key return a dangling reference to already-freed memory.
This can be triggered through safe public APIs — Map::keys(),
Keys::next(), and Map::get() — with no unsafe required from the
caller. Under Miri, accessing the freed slot produces "Undefined Behavior:
pointer not dereferenceable: alloc has been freed, so this pointer is
dangling".
What each source reports
OSV No score
Double-free and use-after-free in `Keys::next()`
Keys::next() uses ptr::read to move out the Option<V> by value, which
drops the contained V when V is non-Copy (e.g. String). This leaves a
dangling value in the map's storage slot. Subsequent get() operations on
that key return a dangling reference to already-freed memory.
This can be triggered through safe public APIs — Map::keys(),
Keys::next(), and Map::get() — with no unsafe required from the
caller. Under Miri, accessing the freed slot produces "Undefined Behavior:
pointer not dereferenceable: alloc has been freed, so this pointer is
dangling".
- Record
RUSTSEC-2026-0128- Updated
- 2026-11-02
Affected packages
| Package | Affected | Fixed |
|---|---|---|
emapcrates.io |
0.0.0-0 and later | None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
RUSTSEC-2026-0128 is a vulnerability with no CVSS score yet in emap, published May 2, 2026. No source lists public exploit code. No source names a fixed version.