Rust advisories / ringbuf
VulnerabilityRUSTSEC-2026-0293 · ringbuf
RUSTSEC-2026-0293: Double free / use-after-free in `Consumer::skip` and `Consumer::clear` when an element's `Drop` panics
Short answerA security vulnerability in the ringbuf crate: Double free / use-after-free in `Consumer::skip` and `Consumer::clear` when an element's `Drop` panics. No severity score was published. Fixed in 0.5.2: update to a fixed version.
| Crate | ringbuf |
|---|---|
| Type | Vulnerability (memory-corruption) |
| Affected versions | Before 0.5.2. |
| Fixed in | 0.5.2 |
| Severity | not scored |
| Published | 2026-09-21 |
| Last changed | 2026-09-21 |
| Also known as | none |
| Affected functions | ringbuf::traits::consumer::Consumer::clear, ringbuf::traits::consumer::Consumer::skip |
What to do
- See which version you have:
cargo tree -i ringbuf(it also shows which of your dependencies pulls it in). - Update within your version requirement:
cargo update -p ringbuf. If the fix is a newer major or minor than your requirement allows, raise it in Cargo.toml (for exampleringbuf = "0.5.2") or update the dependency that pulls it in. - Check again with
cargo audit, or paste your Cargo.lock into our Cargo.toml checker.
Details from the advisory
Consumer::skip() and Consumer::clear() are not panic-safe. They drop the consumed elements in place and only afterwards call advance_read_index() to move the ring buffer's read index past them. If an element's Drop panics mid-loop, advance_read_index() is never reached, so the read index still points at the already-dropped elements. When the ring buffer is later dropped, its destructor re-visits those slots and drops the same elements a second time , a double free (CWE-415) / use-after-free (CWE-416) reachable from safe Rust, confirmed under AddressSanitizer.
Consumer::clear() delegates to Consumer::skip(self.len()), so both share the same root cause and the same fix.
Mitigation
Update to 0.5.2 or later (fixed in agerasev/ringbuf#60).
References
- Package: crates.io/crates/ringbuf
- Advisory: rustsec.org/advisories/RUSTSEC-2026-0293.html
- Web: github.com/agerasev/ringbuf/pull/60
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 →Also worth your time
Did this answer your question?