{"id":"RUSTSEC-2026-0131","aliases":[],"status":"published","title":"Double-free in `Chomp::inner()`","description":"`Chomp::inner()` uses `std::ptr::read_unaligned` to move out the value from a\nraw pointer. If the original value is an owned type (e.g. `Box`), calling\n`inner()` moves out the ownership, but the original variable will still be\ndropped at the end of its scope. This causes the same heap memory to be freed\ntwice, resulting in a double-free and undefined behavior.\n\nThis can be triggered through safe public APIs — `Chomp::new()` and\n`Chomp::inner()` — with no `unsafe` required from the caller.","facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"published":"2026-05-02T12:00:00Z","modified":"2026-05-13T12:45:12Z","affected":[{"source":"osv","ecosystem":"crates.io","package":"bitchomp","ranges":[{"type":"SEMVER","events":[{"introduced":"0.0.0-0"}]}]}],"references":[{"url":"https://crates.io/crates/bitchomp","tags":["package"]},{"url":"https://rustsec.org/advisories/RUSTSEC-2026-0131.html","tags":["advisory"]},{"url":"https://github.com/KingPEPSALT/bitchomp/issues/5","tags":["report"]}],"sources":{"osv":[{"id":"RUSTSEC-2026-0131","title":"Double-free in `Chomp::inner()`","description":"`Chomp::inner()` uses `std::ptr::read_unaligned` to move out the value from a\nraw pointer. If the original value is an owned type (e.g. `Box`), calling\n`inner()` moves out the ownership, but the original variable will still be\ndropped at the end of its scope. This causes the same heap memory to be freed\ntwice, resulting in a double-free and undefined behavior.\n\nThis can be triggered through safe public APIs — `Chomp::new()` and\n`Chomp::inner()` — with no `unsafe` required from the caller.","status":"published","published":"2026-05-02T12:00:00Z","modified":"2026-05-13T12:45:12.022837Z","updated_at":"2026-11-02T15:53:40.430679Z"}]}}
