MINOR: quic: Wrong ACK range building
authorFrédéric Lécaille <flecaille@haproxy.com>
Tue, 16 Nov 2021 09:54:19 +0000 (10:54 +0100)
committerFrédéric Lécaille <flecaille@haproxy.com>
Fri, 19 Nov 2021 13:37:35 +0000 (14:37 +0100)
When adding a range, if no "lower" range was present in the ack range root for
the packet number space concerned, we did not check if the new added range could
overlap the next one. This leaded haproxy to crash when encoding negative integer
when building ACK frames.
This bug was revealed thanks to "multi_packet_client_hello" QUIC tracker
test which makes a client send two first Initial packets out of order.

src/xprt_quic.c

index d451160..0407cc7 100644 (file)
@@ -2592,6 +2592,8 @@ int quic_update_ack_ranges_list(struct quic_arngs *arngs,
                new_node = quic_insert_new_range(arngs, ar);
                if (!new_node)
                        return 0;
+
+               new = &new_node->first;
        }
        else {
                struct quic_arng_node *le_ar =