From 86ca0e52f7fef2db55ee870d5740f715dac7c30d Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Wed, 9 Jun 2021 16:59:02 +0200 Subject: [PATCH] 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. --- src/flt_http_comp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/flt_http_comp.c b/src/flt_http_comp.c index 2ef834238..ba6487727 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;