Skip to content
OpenAdvisories
Unscored RUSTSEC-2026-0401

Out-of-bounds read in `train_from_buffer` when sample sizes overflow

Published Oct 16, 2026 · Updated Nov 2, 2026 · Assigned by RUSTSEC

Description

`ZDICT_trainFromBuffer` is never told the length of the samples buffer, so
`train_from_buffer` checked that the sample sizes add up to it. With
overflow checks off, as in release builds, that sum wrapped around: sizes
totalling 2^64 plus the buffer length passed the check, and the trainer read
past the end of the buffer. `zstd::dict::from_continuous` relies on this
check from zstd 0.4.10; older versions of zstd had their own, covered by a
separate advisory.

This requires the sample sizes to come from an untrusted source. The flaw
was corrected by summing the sizes with overflow checks.

Affected packages

EcosystemPackageAffectedFixedRecord
crates.io zstd-safe >= 0.0.0-0, < 7.4.0 · >= 8.0.0-0, < 8.2.0 7.4.0, 8.2.0 RUSTSEC-2026-0401

References