From: Willy Tarreau Date: Thu, 1 Feb 2007 22:15:45 +0000 (+0100) Subject: [BUG] segfault on some erroneous configurations X-Git-Tag: v1.3.8~38 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4266a36c5a263adeb51f8dc0cacec0d7f2aeeee7;p=thirdparty%2Fhaproxy.git [BUG] segfault on some erroneous configurations If captures were configured in a TCP-only listener, and the logs were enabled, the proxy could segfault when trying to scan the capture buffer which was NULL. Such an erroneous configuration will not be possible anymore soon, but let's avoid the problem for now by detecting the NULL condition. --- diff --git a/src/log.c b/src/log.c index 8052816215..52e2ecfef3 100644 --- a/src/log.c +++ b/src/log.c @@ -349,7 +349,9 @@ void sess_log(struct session *s) h = tmpline; /* right now, header capture is limited to the frontend only */ - if (fe->to_log & LW_REQHDR && (h < tmpline + sizeof(tmpline) - 10)) { + if (fe->to_log & LW_REQHDR && + hreq->req.cap && + (h < tmpline + sizeof(tmpline) - 10)) { *(h++) = ' '; *(h++) = '{'; for (hdr = 0; hdr < fe->nb_req_cap; hdr++) { @@ -362,7 +364,9 @@ void sess_log(struct session *s) *(h++) = '}'; } - if (fe->to_log & LW_RSPHDR && (h < tmpline + sizeof(tmpline) - 7)) { + if (fe->to_log & LW_RSPHDR && + hreq->rsp.cap && + (h < tmpline + sizeof(tmpline) - 7)) { *(h++) = ' '; *(h++) = '{'; for (hdr = 0; hdr < fe->nb_rsp_cap; hdr++) {