From: Christopher Faulet Date: Mon, 22 Jul 2019 14:41:43 +0000 (+0200) Subject: BUG/MINOR: http_ana: Be sure to have an allocated buffer to generate an error X-Git-Tag: v2.1-dev2~288 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9f5839cde27b353446f77c96c5de8068a6228a2a;p=thirdparty%2Fhaproxy.git BUG/MINOR: http_ana: Be sure to have an allocated buffer to generate an error In http_reply_and_close() and http_server_error(), we must be sure to have an allocated buffer (buf.size > 0) to consider it as a valid HTX message. For now, there is no way to hit this bug. But a fix to support "empty" error messages in HTX is pending. Such empty messages, after parsing, will be converted into unallocated buffer (buf.size == 0). This patch must be backported to 2.0 and 1.9. owever, the patch will have to be adapted. --- diff --git a/src/http_ana.c b/src/http_ana.c index 504f98a91d..a0507a3c1d 100644 --- a/src/http_ana.c +++ b/src/http_ana.c @@ -4845,7 +4845,7 @@ void http_server_error(struct stream *s, struct stream_interface *si, int err, /* is an HTX structure. So we copy it in the response's * channel */ - if (msg) { + if (msg && !b_is_null(msg)) { struct channel *chn = si_ic(si); struct htx *htx; @@ -4875,7 +4875,7 @@ void http_reply_and_close(struct stream *s, short status, struct buffer *msg) /* is an HTX structure. So we copy it in the response's * channel */ /* FIXME: It is a problem for now if there is some outgoing data */ - if (msg) { + if (msg && !b_is_null(msg)) { struct channel *chn = &s->res; struct htx *htx;