BUG/MEDIUM: filters: Handle filters registered on data with no payload callback
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 17 Feb 2025 14:54:49 +0000 (15:54 +0100)
committerWilly Tarreau <w@1wt.eu>
Wed, 19 Feb 2025 09:35:04 +0000 (10:35 +0100)
commit6633abae2a17f969754504f2aca37bbfa12f3ca4
treebcafc0e5238caba207d913206ef3c935210b3943
parent4a4e00637418f5342e6cbae8898cb1907b442e87
BUG/MEDIUM: filters: Handle filters registered on data with no payload callback

An HTTP filter with no http_payload callback function may be registered on
data. In that case, this filter is obviously not called when some data are
received but it remains important to update its internal state to be sure to
keep it synchronized on the stream, especially its offet value. Otherwise,
the wrong calculation on the global offset may be performed in
flt_http_end(), leading to an integer overflow when data are moved from
input to output. This overflow triggers a BUG_ON() in c_adv().

The same is true for TCP filters with no tcp_payload callback function.

This patch must be backport to all stable versions.

(cherry picked from commit 34542d5ec29c89ec45b63107f9330f185f0bfd40)
Signed-off-by: Willy Tarreau <w@1wt.eu>
src/filters.c