diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2013-01-09 17:52:43 +0100 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2013-01-09 17:52:43 +0100 |
commit | b6249c44616cd828c2d53506109b50afd2e61839 (patch) | |
tree | f0cd58c6d5134b3ac077d6e58b7b685cfa075c67 | |
parent | a4bc6a465e129b54d25b6b866d711ed418783b63 (diff) | |
download | rsyslog-b6249c44616cd828c2d53506109b50afd2e61839.tar.gz rsyslog-b6249c44616cd828c2d53506109b50afd2e61839.tar.bz2 rsyslog-b6249c44616cd828c2d53506109b50afd2e61839.zip |
bugfix: some property-based filter were incorrectly parsed
This usually lead to a syntax error on startup and rsyslogd not actually
starting up. The problem was the regex, which did not care for double
quote characters to follow in the action part - unfortunately something
that can frequently happen with v6+ format. An example:
:programname, isequal, "as" {action(type="omfile" ...) }
Here, the part
:programname, isequal, "as" {action(type="omfile"
was treated as the property filter, and the rest as action part.
Obviously, this did not work out. Unfortunately, such situations usually
resulted in very hard to understand error messages.
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | grammar/lexer.l | 7 |
2 files changed, 16 insertions, 2 deletions
@@ -1,6 +1,17 @@ ---------------------------------------------------------------------------- Version 7.2.6 [v7-stable] 2013-01-?? - slightly improved config parser error messages when invalid escapes happen +- bugfix: some property-based filter were incorrectly parsed + This usually lead to a syntax error on startup and rsyslogd not actually + starting up. The problem was the regex, which did not care for double + quote characters to follow in the action part - unfortunately something + that can frequently happen with v6+ format. An example: + :programname, isequal, "as" {action(type="omfile" ...) } + Here, the part + :programname, isequal, "as" {action(type="omfile" + was treated as the property filter, and the rest as action part. + Obviously, this did not work out. Unfortunately, such situations usually + resulted in very hard to understand error messages. ---------------------------------------------------------------------------- Version 7.2.5 [v7-stable] 2013-01-08 - build system cleanup (thanks to Michael Biebl for this!) diff --git a/grammar/lexer.l b/grammar/lexer.l index aec05a38..e1f5a9c3 100644 --- a/grammar/lexer.l +++ b/grammar/lexer.l @@ -189,8 +189,11 @@ int fileno(FILE *stream); "module"[ \n\t]*"(" { yylval.objType = CNFOBJ_MODULE; BEGIN INOBJ; return BEGINOBJ; } "action"[ \n\t]*"(" { BEGIN INOBJ; return BEGIN_ACTION; } -^[ \t]*:\$?[a-z\-]+[ ]*,[ ]*!?[a-z]+[ ]*,[ ]*\".*\" { - yylval.s = strdup(rmLeadingSpace(yytext)); return PROPFILT; } +^[ \t]*:\$?[a-z\-]+[ ]*,[ ]*!?[a-z]+[ ]*,[ ]*\"(\\\"|[^\"])*\" { + yylval.s = strdup(rmLeadingSpace(yytext)); + dbgprintf("lexer: propfilt is '%s'\n", yylval.s); + return PROPFILT; + } ^[ \t]*[\*a-z][\*a-z]*[0-7]*[\.,][,!=;\.\*a-z0-7]+ { yylval.s = strdup(rmLeadingSpace(yytext)); return PRIFILT; } "~" | "*" | |