]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MINOR: h3: fix parsing of unknown frame type with null length
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 2 May 2022 08:35:39 +0000 (10:35 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 2 May 2022 09:36:42 +0000 (11:36 +0200)
commit291ee25696e950fec05d43abcf928e11f0f99fdb
treec838bb6afb93ce43164484f413d0aea56f9d4876
parentf1fc0b393ba4d7df3665a330fa680fdefe3f5508
BUG/MINOR: h3: fix parsing of unknown frame type with null length

HTTP/3 implementation must ignore unknown frame type to support protocol
evolution. Clients can deliberately use unknown type to test that the
server is conformant : this principle is called greasing.

Quiche client uses greasing on H3 frame type with a zero length frame.
This reveals a bug in H3 parsing code which causes the transfer to be
interrupted. Fix this by removing the break statement on ret variable.
Now the parsing loop is only interrupted if input buffer is empty or the
demux is blocked.

This should fix http/3 freeze transfers with the quiche client. Thanks
to Lucas Pardue from Cloudflare for his report on the bug. Frédéric
Lecaille quickly found the source of the problem which helps me to write
this patch.
src/h3.c