RustSec logo

HistoryEditJSON (OSV)

RUSTSEC-2026-0078

Symbol confusion after hasher panic in intaglio interners

Reported
Issued
Package
intaglio (crates.io)
Type
Vulnerability
References
Patched
  • >=1.13.3
Affected Functions
Version
intaglio::SymbolTable::intern
  • <1.13.3
intaglio::bytes::SymbolTable::intern
  • <1.13.3
intaglio::cstr::SymbolTable::intern
  • <1.13.3, >=1.5.0
intaglio::osstr::SymbolTable::intern
  • <1.13.3, >=1.5.0
intaglio::path::SymbolTable::intern
  • <1.13.3, >=1.5.0

Description

Affected versions of this crate can leave all SymbolTable variants in an internally inconsistent state if a custom BuildHasher panics during HashMap::insert and the caller recovers with catch_unwind.

The intern implementations committed a vec.push(...) before the matching map.insert(...) completed. If hashing panicked in that window, later lookups and inserts could observe diverging vec and map lengths.

In release builds, this can lead to symbol confusion where a newly interned string resolves to previously interned attacker-controlled contents. In debug builds, the same corruption is detected by follow-up assertions and results in panics.

The flaw was corrected in version 1.13.3 by making the vec mutation transactional across unwind boundaries so partially inserted entries are rolled back before the panic propagates.

Advisory available under CC0-1.0 license.