]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: http: don't dump debug headers on MSG_ERROR
authorWilly Tarreau <w@1wt.eu>
Tue, 21 Oct 2014 17:36:09 +0000 (19:36 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 22 Oct 2014 17:25:09 +0000 (19:25 +0200)
When the HTTP parser is in state HTTP_MSG_ERROR, we don't know if it was
already initialized or not. If the error happens before HTTP_MSG_RQBEFORE,
random offsets might be present and we don't want to display such random
strings in debug mode.

While it's theorically possible to randomly crash the process when running
in debug mode here, this bug was not tagged MAJOR because it would not
make sense to run in debug mode in production.

This fix must be backported to 1.5 and 1.4.

src/proto_http.c

index 3a3aa80306d62dd9e8d94a56cf4532dcf72d759c..6497dac501abffd13a60d011079814e966770b14 100644 (file)
@@ -2546,7 +2546,7 @@ int http_wait_for_request(struct session *s, struct channel *req, int an_bit)
        /* 1: we might have to print this header in debug mode */
        if (unlikely((global.mode & MODE_DEBUG) &&
                     (!(global.mode & MODE_QUIET) || (global.mode & MODE_VERBOSE)) &&
-                    (msg->msg_state >= HTTP_MSG_BODY || msg->msg_state == HTTP_MSG_ERROR))) {
+                    msg->msg_state >= HTTP_MSG_BODY)) {
                char *eol, *sol;
 
                sol = req->buf->p;
@@ -5694,7 +5694,7 @@ int http_wait_for_response(struct session *s, struct channel *rep, int an_bit)
        /* 1: we might have to print this header in debug mode */
        if (unlikely((global.mode & MODE_DEBUG) &&
                     (!(global.mode & MODE_QUIET) || (global.mode & MODE_VERBOSE)) &&
-                    (msg->msg_state >= HTTP_MSG_BODY || msg->msg_state == HTTP_MSG_ERROR))) {
+                    msg->msg_state >= HTTP_MSG_BODY)) {
                char *eol, *sol;
 
                sol = rep->buf->p;