From 4173a39c1fea29450a659292594df0cffcaa8d36 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9ric=20L=C3=A9caille?= Date: Thu, 18 Aug 2022 08:20:47 +0200 Subject: [PATCH] BUG/MINOR: quic: Missing initializations for ducplicated frames. When duplication frames in qc_dup_pkt_frms(), ->pkt member was not correctly initialized (copied from the original frame). This could not have any impact because this member is initialized whe the frame is added to a packet. This was also the case for ->flags. Also replace the pool_zalloc() call by a call to pool_alloc(). Must be backported to 2.6. --- src/xprt_quic.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/xprt_quic.c b/src/xprt_quic.c index b9f2742565..e4cc35bc9a 100644 --- a/src/xprt_quic.c +++ b/src/xprt_quic.c @@ -2330,8 +2330,7 @@ static void qc_dup_pkt_frms(struct quic_conn *qc, break; } - // FIXME: zalloc - dup_frm = pool_zalloc(pool_head_quic_frame); + dup_frm = pool_alloc(pool_head_quic_frame); if (!dup_frm) { TRACE_ERROR("could not duplicate frame", QUIC_EV_CONN_PRSAFRM, qc, frm); break; @@ -2342,11 +2341,13 @@ static void qc_dup_pkt_frms(struct quic_conn *qc, */ origin = frm->origin ? frm->origin : frm; TRACE_DEVEL("built probing frame", QUIC_EV_CONN_PRSAFRM, qc, origin); - *dup_frm = *origin; - LIST_INIT(&dup_frm->reflist); TRACE_DEVEL("duplicated from packet", QUIC_EV_CONN_PRSAFRM, qc, NULL, &origin->pkt->pn_node.key); + *dup_frm = *origin; + dup_frm->pkt = NULL; dup_frm->origin = origin; + dup_frm->flags = 0; + LIST_INIT(&dup_frm->reflist); LIST_APPEND(&origin->reflist, &dup_frm->ref); LIST_APPEND(&tmp, &dup_frm->list); } -- 2.47.3