Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

RUSTSEC-2026-0338: Remote peer can panic quinn-proto with zero-length STREAM frames during unordered reads

Open
#26 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
rust

Research direction

The report describes a panic in quinn-proto's RangeSet::replace while processing zero-length STREAM frames during unordered reads; it does not identify files or tests in this repository. Start by checking whether this gateway uses the affected quinn-proto version and tracing its dependency path. The advisory says the fix is in version 0.11.18; done means confirming the affected dependency is addressed and unordered reads no longer panic.

Written by the indexing model from the issue text.

Description

Remote peer can panic quinn-proto with zero-length STREAM frames during unordered reads

Details
Package quinn-proto
Version 0.11.17
URL https://github.com/quinn-rs/quinn/pull/2868
Date 2026-09-14
Patched versions >=0.11.18
Unaffected versions <0.7.0

When a stream is read in unordered mode (for example through RecvStream::read(false) in
quinn-proto or read_unordered in quinn), quinn-proto proactively deduplicates received data
by recording received ranges in a RangeSet through its replace method. When an incoming
STREAM frame carried an empty payload, the Drop implementation of the iterator returned by
replace inserted an empty range into the set, violating the invariant that stored ranges are
non-empty. Subsequent frames overlapping that region then caused a panic while processing the
stream.

A remote peer can trigger this with five small STREAM frames (two of them zero-length) once the
application has put the stream in unordered-read mode. The default ordered read path is not
affected.

The flaw was corrected in 0.11.18 by ignoring empty ranges in RangeSet::replace.

Thanks to Otto Hermann (@ojhermann) for reporting this issue.

See advisory page for additional details.

Dominant language
Rust
Stars
0
Forks
2
PR merge metrics
No merged PRs in 30d

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from stackabletech/postgresql-trino-gateway

All issues in stackabletech/postgresql-trino-gateway

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.