Skip to main content
VulnerabilityPublished Updated

Zstd safe: Use-after-free when changing a multithreaded context with an unfinished frame

Affects zstd-safeSource GCVE Database

0
Severity
Unrated

Rated by Threat Radar

Patch
Available – fixed in 8.2.0

Data as of 26 Oct 2026, 16:13 UTC

What to do

Upgrade zstd-safe to 8.2.0.

Affected software

ProductAffectedFixed in
crates.iozstd-safepkg:cargo/zstd-safeOther threatsAffected
  • >=0.0.0-0 <8.2.0
Fixed in
  • 8.2.0

Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.

Description

When a multithreaded frame (`zstdmt` feature, `CParameter::NbWorkers`) is left unfinished, its jobs may still be running on the worker threads: the C library only waits for them when the next frame starts, or when the context is freed. A session reset makes the context accept changes again in the meantime, so: - unloading the dictionary (`load_dictionary`, `ref_cdict`, `ref_prefix`, `disable_dictionary`, `init*`, or `reset` with parameters) freed the dictionary a worker was still compressing against; - changing `NbWorkers` made the next frame resize the job table before waiting for the old jobs. The flaw was corrected by refusing these calls while a multithreaded frame is unfinished. The new `CCtx::wait_for_workers()` waits for the workers first.

References

Community reviews

Loading reviews…