Out-of-bounds read when training a dictionary from inconsistent sample sizes
Exact source revision recorded 26 Oct 2026 14:35:44 UTC. It does not establish the source's current position. Latest evidence.
osv · RUSTSEC-2026-0393
Published`ZDICT_trainFromBuffer` is never told the length of the samples buffer. Before 0.4.10, `zstd::dict::from_continuous` (initially `train_dict`) called it directly: up to 0.2.1 without checking the sample sizes against the buffer at all, and from 0.3.0 with a sum that wraps around when overflow checks are off, as in release builds. Sizes that do not describe the buffer made the trainer read past its end. This requires the sample sizes to come from an untrusted source. From 0.4.10, training goes through zstd-safe, where the same flaw is covered by the zstd-safe advisory for it, fixed in zstd-safe 8.2.0.
- Source published
- 16 Oct 2026 12:00:00 UTC
- Source modified
- 26 Oct 2026 14:00:04 UTC
- Observed here
- 26 Oct 2026 14:35:44 UTC
- Source terms
- OSV · upstream source license applies
Original source record · Cite this exact observation · Complete original publisher JSON
This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · OSV · upstream source license applies. Source text is retained; field grouping and change labels are provided by ChangeIntel.