From 5417081c798b3356c200cdd5f5daac6b8f666c12 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 13 Sep 2010 22:50:49 +0200 Subject: [PATCH] [MINOR] halog: skip non-traffic logs for -st and -tc Those were reporting stupid results in presence of administrative logs. --- contrib/halog/halog.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/contrib/halog/halog.c b/contrib/halog/halog.c index ebdcfcfc4..016227987 100644 --- a/contrib/halog/halog.c +++ b/contrib/halog/halog.c @@ -603,7 +603,16 @@ int main(int argc, char **argv) } if (unlikely(filter & FILT_COUNT_STATUS)) { - b = field_start(line, STATUS_FIELD + skip_fields); + /* first, let's ensure that the line is a traffic line (beginning + * with an IP address) + */ + b = field_start(line, SOURCE_FIELD + skip_fields); + if (*b < '0' || *b > '9') { + parse_err++; + continue; + } + + b = field_start(b, STATUS_FIELD - SOURCE_FIELD + 1); if (!*b) { truncated_line(linenum, line); continue; @@ -616,7 +625,16 @@ int main(int argc, char **argv) } if (unlikely(filter & FILT_COUNT_TERM_CODES)) { - b = field_start(line, TERM_CODES_FIELD + skip_fields); + /* first, let's ensure that the line is a traffic line (beginning + * with an IP address) + */ + b = field_start(line, SOURCE_FIELD + skip_fields); + if (*b < '0' || *b > '9') { + parse_err++; + continue; + } + + b = field_start(b, TERM_CODES_FIELD - SOURCE_FIELD + 1); if (!*b) { truncated_line(linenum, line); continue; -- 2.47.3