]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: quic: Missing tasklet (quic_cc_conn_io_cb) memory release (leak)
authorFrédéric Lécaille <flecaille@haproxy.com>
Fri, 11 Aug 2023 09:32:10 +0000 (11:32 +0200)
committerFrédéric Lécaille <flecaille@haproxy.com>
Fri, 11 Aug 2023 09:43:19 +0000 (11:43 +0200)
The tasklet responsible of handling the remaining QUIC connection object
and its traffic was not released, leading to a memory leak. Furthermore its
callback, quic_cc_conn_io_cb(), should return NULL after this tasklet is
released.

src/quic_conn.c

index d0ffc992c9cc3191a8b9e911c8a6e4fe4b381ddd..a2e85d8dfdb7abb100fb9a980cf314991b315748 100644 (file)
@@ -766,6 +766,7 @@ static void quic_release_cc_conn(struct quic_cc_conn *cc_qc)
 
        task_destroy(cc_qc->idle_timer_task);
        cc_qc->idle_timer_task = NULL;
+       tasklet_free(qc->wait_event.tasklet);
        free_quic_conn_cids(qc);
        pool_free(pool_head_quic_cids, cc_qc->cids);
        cc_qc->cids = NULL;
@@ -806,6 +807,7 @@ static struct task *quic_cc_conn_io_cb(struct task *t, void *context, unsigned i
                quic_release_cc_conn(cc_qc);
                cc_qc = NULL;
                qc = NULL;
+               t = NULL;
                goto leave;
        }