[BUG] clf logs segfault when capturing a non existant header
Hi Willy, Please find a small patch to prevent haproxy segfaulting when logging captured headers in CLF format. Example config to reproduce the bug : listen test :10080 log 127.0.0.1 local7 debug err mode http option httplog clf capture request header NonExistantHeader len 16 -- Cyril Bont
This commit is contained in:
parent
296897f2c6
commit
7f2c53938c
|
@ -1018,11 +1018,16 @@ void http_sess_clflog(struct session *s)
|
|||
for (hdr = 0; hdr < fe->nb_req_cap; hdr++) {
|
||||
if (h >= sizeof (tmpline) + tmpline - 4)
|
||||
goto trunc;
|
||||
*(h++) = ' ';
|
||||
*(h++) = '\"';
|
||||
h = encode_string(h, tmpline + sizeof(tmpline) - 2,
|
||||
'#', hdr_encode_map, txn->req.cap[hdr]);
|
||||
*(h++) = '\"';
|
||||
if (txn->req.cap[hdr] != NULL) {
|
||||
*(h++) = ' ';
|
||||
*(h++) = '\"';
|
||||
h = encode_string(h, tmpline + sizeof(tmpline) - 2,
|
||||
'#', hdr_encode_map, txn->req.cap[hdr]);
|
||||
*(h++) = '\"';
|
||||
} else {
|
||||
memcpy(h, " \"-\"", 4);
|
||||
h += 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1030,11 +1035,16 @@ void http_sess_clflog(struct session *s)
|
|||
for (hdr = 0; hdr < fe->nb_rsp_cap; hdr++) {
|
||||
if (h >= sizeof (tmpline) + tmpline - 4)
|
||||
goto trunc;
|
||||
*(h++) = ' ';
|
||||
*(h++) = '\"';
|
||||
h = encode_string(h, tmpline + sizeof(tmpline) - 2,
|
||||
'#', hdr_encode_map, txn->rsp.cap[hdr]);
|
||||
*(h++) = '\"';
|
||||
if (txn->rsp.cap[hdr] != NULL) {
|
||||
*(h++) = ' ';
|
||||
*(h++) = '\"';
|
||||
h = encode_string(h, tmpline + sizeof(tmpline) - 2,
|
||||
'#', hdr_encode_map, txn->rsp.cap[hdr]);
|
||||
*(h++) = '\"';
|
||||
} else {
|
||||
memcpy(h, " \"-\"", 4);
|
||||
h += 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue