BUG/MINOR: quic: Dereferenced unchecked pointer to Handshke packet number space

This issue was reported by longrtt interop test with quic-go as client
and @chipitsine in GH #2282 when haproxy is compiled against libressl.

Add two checks to prevent a pointer to the Handshake packet number space
to be dereferenced if this packet number space was released.

Thank you to @chipitsine for this report.

No need to backport.
This commit is contained in:
Frdric Lcaille 2023-09-06 09:15:55 +02:00 committed by Willy Tarreau
parent 700ca14fc1
commit e7240a0ba6

View File

@ -1339,6 +1339,7 @@ int qc_dgrams_retransmit(struct quic_conn *qc)
goto leave; goto leave;
/* Put back unsent frames in their packet number spaces */ /* Put back unsent frames in their packet number spaces */
LIST_SPLICE(&ipktns->tx.frms, &ifrms); LIST_SPLICE(&ipktns->tx.frms, &ifrms);
if (hpktns)
LIST_SPLICE(&hpktns->tx.frms, &hfrms); LIST_SPLICE(&hpktns->tx.frms, &hfrms);
} }
else { else {
@ -1357,6 +1358,7 @@ int qc_dgrams_retransmit(struct quic_conn *qc)
TRACE_STATE("no more need to probe Initial packet number space", TRACE_STATE("no more need to probe Initial packet number space",
QUIC_EV_CONN_TXPKT, qc); QUIC_EV_CONN_TXPKT, qc);
ipktns->flags &= ~QUIC_FL_PKTNS_PROBE_NEEDED; ipktns->flags &= ~QUIC_FL_PKTNS_PROBE_NEEDED;
if (hpktns)
hpktns->flags &= ~QUIC_FL_PKTNS_PROBE_NEEDED; hpktns->flags &= ~QUIC_FL_PKTNS_PROBE_NEEDED;
} }
else { else {