]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: quic-be: prevent use of MUX for 0-RTT sessions without secrets
authorFrederic Lecaille <flecaille@haproxy.com>
Mon, 17 Nov 2025 14:08:39 +0000 (15:08 +0100)
committerFrederic Lecaille <flecaille@haproxy.com>
Mon, 17 Nov 2025 14:40:24 +0000 (15:40 +0100)
commit37d01eea37f090fe8a09a1ca0aa116d02ea26977
treedb99d34cd0857cfa78b948656ac526794161d14e
parent03672273754efc979057e61872cf83df8f7273e1
BUG/MEDIUM: quic-be: prevent use of MUX for 0-RTT sessions without secrets

The QUIC backend crashes when its peer does not support 0-RTT. In this case,
when the sessions are reused, no early-data level secrets are derived by
the TLS stack. This leads to crashes from qc_send_mux() which does not suppose
that both early-data level (qc->eel) and application level (qc->ael) cipher levels
could be non initialized.

To fix this:
  - prevent qc_send_mux() to send data if these two encryption level are not
    intialized. In this case it returns QUIC_TX_ERR_NONE;
  - avoid waking up the MUX from XPRT ->start() callback if the MUX is ready
    but without early-data level secrets to send them;
  - ensure the MUX is woken up by qc_ssl_do_handshake() after handshake completion
    if it is ready calling qc_notify_send()

Thank you to @InputOutputZ for having reported this issue in GH #3188.

No need to backport because QUIC backends is a current 3.3 development feature.
src/quic_ssl.c
src/quic_tx.c
src/xprt_quic.c