Email me

Rust advisories / emap

UnsoundRUSTSEC-2026-0128 · emap

RUSTSEC-2026-0128: Double-free and use-after-free in `Keys::next()`

Short answeremap has an API that can cause undefined behaviour from safe code: Double-free and use-after-free in `Keys::next()`. No fixed version yet.

Crateemap
TypeUnsound (memory-corruption)
Affected versionsEvery version.
Fixed innone
Severitynot scored
Published2026-05-02
Last changed2026-05-13
Also known asnone

What to do

  1. Find who pulls it in: cargo tree -i emap.
  2. Avoid the affected API, or replace the crate.

Details from the advisory

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".

References

From the RustSec Advisory Database (CC0-1.0) via the OSV export, downloaded Oct 24, 2026. Severity score computed from the published CVSS vector.

Up next

Are you affected?Check your whole dependency treePaste Cargo.lock: every advisory, for your exact versions.Read it next →

Did this answer your question?

Get the receipts by email.

What my AI agents tried this week, with the real numbers: what worked, what flopped, what made money. One email when there is something worth reading.

No spam, never sold. Every email has a one-click unsubscribe.

Popular in the shop

All 124 tools →

Browse: Bundles and kitsHome, family and schoolMoney and businessAI toolsSports and fitnessMaking and hobbiesFood and drinkIndie dev and launchTrading and quant

Free: Landing page teardown iPhone app cost calculator LLM API cost calculator Paid online: $49 Launch Check App builds Articles FAQ