Skip to content

node:http2: copy goaway opaqueData before writing over JS-backed sockets - #36905

Merged
Jarred-Sumner merged 5 commits into
mainfrom
farm/9488ee88/http2-goaway-opaque-data-uaf
Aug 4, 2026
Merged

Jarred-Sumner merged 5 commits into
mainfrom
farm/9488ee88/http2-goaway-opaque-data-uaf

node:http2: copy goaway opaqueData before writing over JS-backed sockets

e83b85e
Select commit
Loading
Failed to load commit list.
Claude / Claude Code Review completed Aug 4, 2026 in 35m 32s

Code review found 1 potential issue

Found 1 candidates, confirmed 1. See review comments for details.

Details

Severity Count
🔴 Important 0
🟡 Nit 1
🟣 Pre-existing 0
Severity File:Line Issue
🟡 Nit src/runtime/api/bun/h2_frame_parser.rs:6606-6614 Same borrowed-slice-across-JS-reentry bug remains in write_stream/send_data

Annotations

Check warning on line 6614 in src/runtime/api/bun/h2_frame_parser.rs

See this annotation in the file changed.

@claude claude / Claude Code Review

Same borrowed-slice-across-JS-reentry bug remains in write_stream/send_data

The same borrowed-slice-across-JS-reentry pattern this PR fixes for `goaway()` remains in `write_stream()` → `send_data()`'s single-frame branch (h2_frame_parser.rs:7314): `StringOrBuffer::from_js_with_encoding` borrows the caller's Buffer, and `writer.write_all(slice)` goes through the identical cork-flush → `onWrite` → user Duplex `_write()` loop over a JS-backed socket. Per REVIEW.md ("fix the whole class… if a site is intentionally excluded, say so in the PR"), either gate a defensive copy o