---
id: RUSTSEC-2026-0402
title: 'Heap buffer overflow in `CCtx::try_clone` on a multithreaded context'
summary: 'Heap buffer overflow in `CCtx::try_clone` on a multithreaded context'
severity: none
vendor: zstd-safe
product: zstd-safe
ecosystem: rust
affected:
  - 'zstd-safe >= 8.0.0-0, < 8.2.0'
patched:
  - zstd-safe 8.2.0
published: '2026-10-16'
updated: '2026-11-02'
sourceUpdated: '2026-11-02T09:30:04.162155944Z'
source: OSV
sourceUrl: 'https://osv.dev/vulnerability/RUSTSEC-2026-0402'
references:
  - url: 'https://crates.io/crates/zstd-safe'
  - url: 'https://rustsec.org/advisories/RUSTSEC-2026-0402.html'
  - url: >-
      https://github.com/gyscos/zstd-rs/commit/682b8b2967cf4aba5cfe2d940d1e381a3e23211a
  - url: 'https://github.com/gyscos/zstd-rs/pull/384'
tags:
  - osv
  - rust
ingestedAt: '2026-10-27T16:20:12.106Z'
---

## Overview

`CCtx::try_clone` (`experimental` feature, deprecated) copies tables sized
from the context's applied parameters. Starting a multithreaded frame
(`zstdmt` feature) replaces those parameters with the workers' without
resizing the context's own tables, so after an abandoned single-threaded
frame, the copy wrote up to 512 KiB past a heap allocation, or read past
one. This became reachable with the bundled zstd 1.5.6.

The flaw was corrected by refusing `try_clone` (and the unsafe
`compress_block`) once `NbWorkers` was set on the context.

## Affected packages

- `zstd-safe >= 8.0.0-0, < 8.2.0`

## Remediation

Upgrade to a patched release:

- `zstd-safe 8.2.0`
