BUG/MINOR: quic: Possible crash in quic_conn_prx_cntrs_update()
quic_conn_prx_cntrs_update() may be called from quic_conn_release() with
NULL as value for ->prx_counters member. This is the case when qc_new_conn() fails
when allocating <buf_area>. In this case quic_conn_prx_cntrs_update() BUG_ON().
Must be backported as far as 2.7.
(cherry picked from commit c02d898cd13d036e1897daae5e2362ec8705e427)
Signed-off-by: William Lallemand <wlallemand@haproxy.org>
diff --git a/src/quic_conn.c b/src/quic_conn.c
index 319a614..e5fd58b 100644
--- a/src/quic_conn.c
+++ b/src/quic_conn.c
@@ -5716,7 +5716,9 @@
/* Update the proxy counters of <qc> QUIC connection from its counters */
static inline void quic_conn_prx_cntrs_update(struct quic_conn *qc)
{
- BUG_ON(!qc->prx_counters);
+ if (!qc->prx_counters)
+ return;
+
HA_ATOMIC_ADD(&qc->prx_counters->dropped_pkt, qc->cntrs.dropped_pkt);
HA_ATOMIC_ADD(&qc->prx_counters->dropped_pkt_bufoverrun, qc->cntrs.dropped_pkt_bufoverrun);
HA_ATOMIC_ADD(&qc->prx_counters->dropped_parsing, qc->cntrs.dropped_parsing);