Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions crates/sp-sized-chunks/RUSTSEC-0000-0000.md
Original file line number Diff line number Diff line change
@@ -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`
Comment thread
djc marked this conversation as resolved.
Outdated

## Impact

- **CWE-415 (Double Free):** the same allocation is freed twice (e.g. an element holding `Box<T>`).
- **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.