diff --git a/crates/sp-sized-chunks/RUSTSEC-0000-0000.md b/crates/sp-sized-chunks/RUSTSEC-0000-0000.md new file mode 100644 index 000000000..334547c79 --- /dev/null +++ b/crates/sp-sized-chunks/RUSTSEC-0000-0000.md @@ -0,0 +1,35 @@ +```toml +[advisory] +id = "RUSTSEC-0000-0000" +package = "sp-sized-chunks" +date = "2026-08-04" +categories = ["memory-corruption"] +keywords = ["panic-safety", "memory-safety", "use-after-free", "double-free"] +informational = "unsound" + +[versions] +patched = [] +unaffected = [] +``` + +# Panic-safety unsoundness in `Chunk` and `InlineArray` (use-after-free / double-free) + +Several methods in `sp-sized-chunks` drop elements before updating the container's length/boundary metadata. If an element's `Drop` panics during the drop, the metadata update is skipped, so the container still treats the already-dropped elements as live. When the container is later dropped, its own `Drop` re-visits those slots and drops the freed elements again — a use-after-free / double-free reachable from safe Rust. + +`sp-sized-chunks` is a fork of `sized-chunks` (companion advisory filed separately) and carries the same bug. + +## Affected methods + +- `Chunk::clear`, `Chunk::drop_left`, `Chunk::drop_right` +- `InlineArray::clear` + +## Impact + +- **CWE-415 (Double Free):** the same allocation is freed twice (e.g. an element holding `Box`). +- **CWE-416 (Use-After-Free):** an element reads its own freed allocation during `Drop` (e.g. `String`) — confirmed under AddressSanitizer. + +All are reachable from safe Rust via `catch_unwind` with element types whose `Drop` can panic. + +## Status + +The repository is archived and the crate is still on 0.1.0 with no fix. Affected users should avoid these methods with element types whose `Drop` can panic, or migrate away from the crate.