From: Christopher Faulet Date: Wed, 9 Jun 2021 14:59:02 +0000 (+0200) Subject: BUG/MEDIUM: compression: Fix loop skipping unused blocks to get the next block X-Git-Tag: v2.5-dev1~176 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=86ca0e52f7fef2db55ee870d5740f715dac7c30d;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: compression: Fix loop skipping unused blocks to get the next block In comp_http_payload(), the loop skipping unused blocks is buggy and may lead to a infinite loop if the first next block is unused. Indeed instead of iterating on blocks, we always retrieve the same one because is used instead of to get the next block. This bug was introduced when the EOM block was removed in 2.4. Thus, this patch must be backported to 2.4. --- diff --git a/src/flt_http_comp.c b/src/flt_http_comp.c index 2ef8342382..ba64877274 100644 --- a/src/flt_http_comp.c +++ b/src/flt_http_comp.c @@ -181,7 +181,7 @@ comp_http_payload(struct stream *s, struct filter *filter, struct http_msg *msg, next = htx_get_next_blk(htx, blk); while (next && htx_get_blk_type(next) == HTX_BLK_UNUSED) - next = htx_get_next_blk(htx, blk); + next = htx_get_next_blk(htx, next); if (htx_compression_buffer_init(htx, &trash) < 0) { msg->chn->flags |= CF_WAKE_WRITE;