fix(deps): bump h2 to 0.4.19 for RUSTSEC-2026-0258 - #120
Merged
Conversation
The `security` job (`cargo audit`) and the `cargo-deny (advisories + licenses)` job in .github/workflows/ci.yml have been red on main and on every pull request, including Dependabot PR #112. Both fail on the same advisory: Crate: h2 Version: 0.4.10 Title: h2 unbounded empty DATA frames ID: RUSTSEC-2026-0258 URL: https://rustsec.org/advisories/RUSTSEC-2026-0258 h2 accepted and queued empty DATA frames without limit; on streams that were not actively drained this could grow memory without bound or panic on length overflow. Patched in 0.4.16. h2 is transitive here, reached through hyper-util, hyper-rustls, axum, reqwest and mockito. `cargo update -p h2` moves it 0.4.10 -> 0.4.19 within the existing semver requirement, so this is a Cargo.lock-only change; no manifest and no source changes. The advisory is fixed, not ignored: deny.toml gains no exception and cargo audit gains no --ignore flag. Verified locally with cargo-audit 0.22 and cargo-deny against this Cargo.lock: - Before: `cargo audit` reports `error: 1 vulnerability found!` (RUSTSEC-2026-0258) and `cargo deny check advisories licenses` reports `advisories FAILED, licenses ok`. - After: `cargo audit` exits 0 with only the three pre-existing allowed warnings (RUSTSEC-2026-0221 event-listener, RUSTSEC-2026-0097 rand, yanked spin 0.9.8), and `cargo deny check advisories licenses` reports `advisories ok, licenses ok`. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XpuXXVrWCZk3Tq5NRXejNP
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What broke
Two jobs in
.github/workflows/ci.ymlare red on main and on every open PR, including Dependabot #112:security— runscargo auditcargo-deny (advisories + licenses)— runscargo deny check advisories licensesBoth fail on one advisory:
h2 accepted and queued empty DATA frames without limit. On streams that are not actively drained that grows memory without bound, or panics when the length overflows. Patched in 0.4.16.
The change
cargo update -p h2moves h2 from 0.4.10 to 0.4.19 inside the existing semver requirement. h2 is transitive here — it arrives throughhyper-util,hyper-rustls,axum,reqwestandmockito— so this is aCargo.lock-only change with no manifest and no source edits.The advisory is fixed, not silenced:
deny.tomlgets no new exception, andcargo auditgets no--ignore.How I verified
Locally with cargo-audit and cargo-deny against this
Cargo.lock:cargo auditerror: 1 vulnerability found!(RUSTSEC-2026-0258)cargo deny check advisories licensesadvisories FAILED, licenses okadvisories ok, licenses okAfter the bump
cargo auditstill reports the three warnings that were already tolerated on main and do not fail the build: RUSTSEC-2026-0221 (event-listener), RUSTSEC-2026-0097 (rand), and yankedspin0.9.8. This PR does not change their status.cargo checkwas not run locally (denied by a local disk and thermal guard on this machine). Thelint,testandcoveragejobs on this PR cover compilation.Unblocks
#112 (
ws8.19.0 -> 8.21.3 in/web), whose only failing checks are these two jobs. Note that thereviewjob the sweep flagged for a missing merge base already passes —.github/workflows/ci.ymlline 18 and.github/workflows/diffscope.ymlline 21 both already setfetch-depth: 0.🤖 Generated with Claude Code
https://claude.ai/code/session_01XpuXXVrWCZk3Tq5NRXejNP