]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: http_ana: Be sure to have an allocated buffer to generate an error
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 22 Jul 2019 14:41:43 +0000 (16:41 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 23 Jul 2019 12:58:23 +0000 (14:58 +0200)
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.

src/http_ana.c

index 504f98a91dffbda8139f4454bee0426f02978d0b..a0507a3c1d0e75089ad9fa36764799698d220e24 100644 (file)
@@ -4845,7 +4845,7 @@ void http_server_error(struct stream *s, struct stream_interface *si, int err,
 
        /* <msg> 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)
        /* <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;