Email me

Rust advisories / lru

UnsoundRUSTSEC-2026-0253 · lru

RUSTSEC-2026-0253: Potential use-after-free due to lack of panic safety in `LruCache::pop()`

Short answerlru has an API that can cause undefined behaviour from safe code: Potential use-after-free due to lack of panic safety in `LruCache::pop()`. Fixed in 0.18.2.

Cratelru
TypeUnsound (memory-corruption)
Affected versionsBefore 0.18.2.
Fixed in0.18.2
Severitynot scored
Published2026-05-12
Last changed2026-08-11
Also known asnone

What to do

  1. See which version you have: cargo tree -i lru (it also shows which of your dependencies pulls it in).
  2. Update within your version requirement: cargo update -p lru. If the fix is a newer major or minor than your requirement allows, raise it in Cargo.toml (for example lru = "0.18.2") or update the dependency that pulls it in.
  3. Check again with cargo audit, or paste your Cargo.lock into our Cargo.toml checker.

Details from the advisory

LruCache::pop() in lru was not panic-safe. If the Drop implementation of a stored key panics during pop(), self.detach() is never called, leaving dangling pointers in the internal doubly-linked list.

A subsequent cache operation that triggers eviction can then dereference these dangling pointers:

  • The node is freed from the map, but remains linked in the LRU list due to the skipped detach() call
  • When a new insertion causes eviction, the LRU traversal encounters the dangling pointer
  • This results in a write to already-freed memory during the eviction process

Impact

  • **CWE-416 (Use-After-Free):** memory corruption when subsequent cache operations access freed node pointers in the linked list
  • **CWE-415 (Double Free):** potential heap corruption when the same memory is freed multiple times

Both types of undefined behavior can be invoked in safe Rust, but only if unwinding panics are enabled and std::panic::catch_unwind is used with key types that have potentially-panicking Drop implementations.

Fix

Fixed in lru 0.18.2 by detaching the node from the linked list before freeing it and dropping the key (lru-rs#238).

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.

Other advisories for lru

Full security history of lru

Up next

Same cratelru: security historyEvery advisory for this crate, and whether it is safe to use today.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