Skip to content

RUSTSEC-2026-0400: Use-after-free of a dictionary after a one-shot call on a context with an open stream #60

Open

Description

@github-actions

Use-after-free of a dictionary after a one-shot call on a context with an open stream

Details
Status unsound
Package zstd-safe
Version 7.2.4
URL gyscos/zstd-rs@d34502a
Date 2026-10-16

The one-shot DCtx and CCtx methods assumed the C library resets the
context, but it leaves an open stream as it is. When a stream was left
unfinished on a context, a one-shot call such as decompress_using_dict
could leave the context pointing at the dictionary borrowed for that call,
and the next streaming call resumed the stream against it after it was
freed: decompressed output then contained freed heap memory. On the
compression side, the stream resumed against the one-shot call's buffers.

This requires an application to use one context for both streaming and
one-shot calls without a reset in between. The flaw was corrected by
resetting the session after one-shot calls whenever a stream may be open.

See advisory page for additional details.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions