]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: quic: fix datagram dropping on queueing failed
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 24 Nov 2022 14:24:38 +0000 (15:24 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 24 Nov 2022 15:45:02 +0000 (16:45 +0100)
commit9875f024baa450f412e7dfacdd7172bb57a39b8e
treed42e41c1a32a2c10e125772419fa1fd0d1041f77
parent6c72fa3d185395ec4d049393f360f94abca6539a
BUG/MEDIUM: quic: fix datagram dropping on queueing failed

After reading a datagram, it is enqueud for the thread attached to the
DCID. This is done via quic_lstnr_dgram_dispatch() function. If this
step fails, we remove the datagram from the buffer of quic_receiver_buf.

This step is faulty because we use b_del() instead of b_sub(). If
quic_receiver_buf was not empty, we will remove content from another
datagram while leaving the content of the last read datagram. This
probably produces valid datagram dropping and may even result in crash.

As stated, this bug can only happen if qc_lstnr_dgram_dispatch() fails
which happen on two occaions :
* on quic_dgram allocation failure, which should be pretty rare
* on datagram labelled as invalid for QUIC protocol. This may happen
  more frequently depending on the network conditions. Thus, this bug
  has been labelled as a medium one.

This should be backported up to 2.6.
src/quic_sock.c