From: Willy Tarreau Date: Fri, 1 May 2009 09:33:17 +0000 (+0200) Subject: [BUG] fix wrong pointer arithmetics in HTTP message captures X-Git-Tag: v1.3.18~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2df8d713b351e2d4824f7637c5c88cd179ad12a9;p=thirdparty%2Fhaproxy.git [BUG] fix wrong pointer arithmetics in HTTP message captures The pointer arithmetics was wrong in http_capture_bad_message(). This has no impact right now because the error only msg->som was affected and right now it's always 0. But this was a bug waiting for keepalive support to strike. --- diff --git a/src/proto_http.c b/src/proto_http.c index 3dd11ec738..de93ccc3eb 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -4392,14 +4392,12 @@ void http_capture_bad_message(struct error_snapshot *es, struct session *s, struct buffer *buf, struct http_msg *msg, struct proxy *other_end) { - int maxlen = MIN(buf->r - buf->data + msg->som, sizeof(es->buf)); - - memcpy(es->buf, buf->data + msg->som, maxlen); + es->len = buf->r - (buf->data + msg->som); + memcpy(es->buf, buf->data + msg->som, MIN(es->len, sizeof(es->buf))); if (msg->err_pos >= 0) - es->pos = msg->err_pos + msg->som; + es->pos = msg->err_pos - msg->som; else - es->pos = buf->lr - buf->data + msg->som; - es->len = buf->r - buf->data + msg->som; + es->pos = buf->lr - (buf->data + msg->som); es->when = date; // user-visible date es->sid = s->uniq_id; es->srv = s->srv;