From: Frédéric Lécaille Date: Thu, 18 Aug 2022 06:20:47 +0000 (+0200) Subject: BUG/MINOR: quic: Missing initializations for ducplicated frames. X-Git-Tag: v2.7-dev4~22 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4173a39c1fea29450a659292594df0cffcaa8d36;p=thirdparty%2Fhaproxy.git 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. --- 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); }