[+] Fix: Enhance request parsing to avoid hq parsing error #520
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.
Related issue: #518 #511
Issue: xqc_hq_parse_req uses sscanf("%s %s") without bounds, so a long URL from neqo overruns the 256‑byte buffer. Since xqc_hq_request_recv_req didn’t null‑terminate the buffer, later strlen() walks into uninitialized memory, causing an ASan heap-buffer-overflow and leaving HQ requests stuck after “hq recv CR LF”.
Fixes:
Build a bounded format string (e.g. "%15s %255s") before calling sscanf, so both method and path respect the buffer size.
After reading from the QUIC stream, check whether recv_cnt hits the buffer limit; if not, append '\0'. This guarantees strlen()/sscanf() operate on a valid C string.
When neqo client interop with xquic server, xquic server will trigger core dump & timeout, gdb log like this:
This PR will solve the issue of parsing error if server run as expected.