]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: quic-be: quic_conn_closed buffer overflow
authorFrederic Lecaille <flecaille@haproxy.com>
Fri, 21 Nov 2025 08:52:41 +0000 (09:52 +0100)
committerFrederic Lecaille <flecaille@haproxy.com>
Fri, 21 Nov 2025 09:49:44 +0000 (10:49 +0100)
commit91f479604e93f55715f5c84e87547c17e1d52ab8
tree09a26192145dea3db93f10f5c52352ae8e68968a
parente6064c561684d9b079e3b5725d38dc3b5c1b5cd5
BUG/MEDIUM: quic-be: quic_conn_closed buffer overflow

This bug impacts only the backends.

Recent commits have modified quic_rx_pkt_parse() for the QUIC backend to handle the
retry token, and version negotiation. This function is called for the quic_conn
even when is closing state (so for the quic_conn_closed struct). The quic_conn
struct and quic_conn_closed struct share some members thank to the leading
QUIC_CONN_COMMON struct. The recent modification impacts some members which do not
exist for the quic_connn_closed struct, leading to buffer overflows if modified.

For the backends only this patch:
  1- silently drops the Retry packet (received/parsed only by backends)
  2- silently drops the Initial packets received in closing state

This is safe for the Initial packets because in closing state the datagrams
are entirely skipped thanks to qc_rx_check_closing() in quic_dgram_parse().

No backport needed because the backend support arrived with the current dev.
src/quic_rx.c