Skip to content

mod_http3 lifetime security fixes - #1036

Open
xl32 wants to merge 2 commits into
apache:trunkfrom
xl32:h3-sec-fixes
Open

xl32 wants to merge 2 commits into
apache:trunkfrom
xl32:h3-sec-fixes

Conversation

@xl32

@xl32 xl32 commented Nov 14, 2026

Copy link
Copy Markdown
Contributor
  • A CONNECT request has no :path. The worker did not set r->uri, and the location walk read a NULL pointer, so the child process stopped. Use the authority as the target, as HTTP/1.1 does.
  • The worker wrote session->wake after it decremented active_tasks. At zero, the event thread can free the session. Wake first.
  • Removing the last entry of a QUIC accept queue with more than one entry set the tail to NULL. The next entry replaced the head, and the queued streams or connections were lost. Keep the previous entry as the tail.
  • During a graceful stop, new connections stayed in the engine until the child stopped. Free them.

  • This PR does not report or address a security vulnerability
    (see SECURITY.md and
    https://www.apache.org/security/#reporting-a-vulnerability).
    trunk only, mod_http3 never published in 2.4.x
  • Code follows the httpd style guide.
  • New log messages (level debug or higher) use an empty APLOGNO() tag;
    numbers are assigned by a committer at merge time (see docs/log-message-tags/README).
  • If the change is user-visible, a changes-entries/*.txt file is included,
    following the template in README.CHANGES (not needed otherwise).
  • Test cases based on pyhttpd are included where appropriate, in the
    test/modules/xxx directory matching the modules/xxx module source,
    or test/modules/core for core server changes. On Unix, verify these
    pass locally with e.g. make check-pytest PYTEST_DIRS=test/modules/xxx.

xl32 added 2 commits November 14, 2026 18:37
A CONNECT request has no :path. The worker did not set r->uri, and the
location walk read a NULL pointer, so the child process stopped. Use the
authority as the target, as HTTP/1.1 does.
* The worker wrote session->wake after it decremented active_tasks. At
  zero, the event thread can free the session. Wake first.
* Removing the last entry of a QUIC accept queue with more than one entry
  set the tail to NULL. The next entry replaced the head, and the queued
  streams or connections were lost. Keep the previous entry as the tail.
* During a graceful stop, new connections stayed in the engine until the
  child stopped. Free them.
@xl32 xl32 changed the title H3 sec fixes mod_http3 lifetime security fixes Nov 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant