From 47a7210b9d377d91777f39241fab54d5f83b2728 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Mon, 6 Jan 2020 11:37:00 +0100 Subject: [PATCH] BUG/MINOR: proxy: Fix input data copy when an error is captured In proxy_capture_error(), input data are copied in the error snapshot. The copy must take care of the data wrapping. But the length of the first block is wrong. It should be the amount of contiguous input data that can be copied starting from the input's beginning. But the mininum between the input length and the buffer size minus the input length is used instead. So it is a problem if input data are wrapping or if more than the half of the buffer is used by input data. This patch must be backported as far as 1.9. --- src/proxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/proxy.c b/src/proxy.c index 9448d1a..8720b28 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -1545,7 +1545,7 @@ void proxy_capture_error(struct proxy *proxy, int is_back, es->buf_len = buf_len; es->ev_id = ev_id; - len1 = b_size(buf) - buf_len; + len1 = b_size(buf) - b_peek_ofs(buf, buf_out); if (len1 > buf_len) len1 = buf_len; -- 1.7.10.4