From 4266a36c5a263adeb51f8dc0cacec0d7f2aeeee7 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 1 Feb 2007 23:15:45 +0100 Subject: [PATCH] [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. --- src/log.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/log.c b/src/log.c index 805281621..52e2ecfef 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++) {