BUG/MEDIUM: quic-be: avoid crashes when releasing Initial pktns

This bug arrived with this fix:

    BUG/MINOR: quic-be: missing Initial packet number space discarding

leading to crashes when dereferencing ->ipktns.

Such crashes could be reproduced with -dMfail option. To reach them, the
memory allocations must fail. So, this is relatively rare, except on systems
with limited memory.

To fix this, do not call quic_pktns_discard() if ->ipktns is NULL.

No need to backport.
This commit is contained in:
Frederic Lecaille 2025-08-26 10:26:14 +02:00
parent c36e4fb17f
commit 729196fbed

View File

@ -916,7 +916,7 @@ struct task *quic_conn_io_cb(struct task *t, void *context, unsigned int state)
* discard Initial keys when it first sends a Handshake packet... * discard Initial keys when it first sends a Handshake packet...
*/ */
if (qc_is_back(qc) && !quic_tls_pktns_is_dcd(qc, qc->ipktns) && if (qc_is_back(qc) && qc->ipktns && !quic_tls_pktns_is_dcd(qc, qc->ipktns) &&
qc->hpktns && qc->hpktns->tx.in_flight > 0) { qc->hpktns && qc->hpktns->tx.in_flight > 0) {
/* Discard the Initial packet number space. */ /* Discard the Initial packet number space. */
TRACE_PROTO("discarding Initial pktns", QUIC_EV_CONN_PRSHPKT, qc); TRACE_PROTO("discarding Initial pktns", QUIC_EV_CONN_PRSHPKT, qc);