[syslog-ng] max recursion depth on filters?
Patrick Hemmer
syslogng at stormcloud9.net
Sun Mar 11 18:22:32 CET 2012
Sent: Sun Mar 11 2012 07:26:20 GMT-0600 (EDT)
From: Balazs Scheidler <bazsi at balabit.hu>
To: Syslog-ng users' and developers' mailing list
<syslog-ng at lists.balabit.hu>
Subject: Re: [syslog-ng] max recursion depth on filters?
> On Fri, 2012-02-03 at 20:37 -0500, Patrick Hemmer wrote:
>> Is there a maximum depth on recursive filter statements?
>> I seem to have an issue which would indicate so.
>>
>> For example, in the config below, i have f_discard, which calls
>> f_iptables_discard, which calls f_iptables. I have it like this so
>> that its easy to read, configure, and add other filters. Its supposed
>> to result in lines matching this to not be logged, but its not
>> working. However if I take the contents of `f_iptables_discard` and
>> put them directly into `f_discard` it works fine.
>>
>> filter f_iptables {
>> program('^kernel')
>> and message('^\s*\[\s*[\d\.]+\] iptables/' type(pcre))
>> };
>> filter f_iptables_discard {
>> # ignore iptables broadcast messages
>> filter(f_iptables)
>> and message('MAC=ff:ff:ff:ff:ff:ff')
>> ;
>> };
>>
>> filter f_discard {
>> not (
>> filter(f_iptables_discard)
>> );
>> };
>> rewrite r_tag {
>> set('iptables', value('DBTAG') condition(filter(f_iptables)));
>> };
>>
>> log {
>> source(s_local); source(s_net);
>> rewrite(r_tag);
>> filter(f_discard);
>> destination(d_sqlite);
>> };
> Nothing intentional, however there was a bug in filter() expression
> evaluation, namely it wasn't resolving the nested filter properly in
> case it was embedded as a part of an "AND" or "OR" subexpression.
>
> This patch was fixing it:
> Author: Balazs Scheidler<bazsi at balabit.hu> 2011-10-23 20:19:58
> Committer: Balazs Scheidler<bazsi at balabit.hu> 2011-10-23 20:19:58
> Parent: 46bbdf9a107409e320450f9c4b6a82c2cf9f36af (LogMatcher: fixed reference counting)
> Child: a2b4febbd1a6147762420a227600afba0eff4778 (configure: don't use non-standard arguments for "head")
> Branches: many (30)
> Follows: v3.3.1
> Precedes: dfsg/3.3.2_0, v3.3.2
>
> filters: fixed filter() evaluation when embedded as an AND/OR subexpression
>
> When introducing the "init" method for filters one case was omitted: even
> though AND and OR expressions don't want to do anything on init, their
> subexpressions might, so this patch adds an init function to AND and OR
> which does nothing but calls the same for its "left" and "right"
> subexpression.
>
> This patch fixes filter("xxx") expression evaluation when that is
> not a single expression, but rather included in an AND or OR.
>
> Reported-By: Leonid Isaev<lisaev at umail.iu.edu>
> Cc:<syslog-ng-stable at balabit.hu>
> Signed-off-by: Balazs Scheidler<bazsi at balabit.hu>
>
>
> This was released as a part of 3.3.2, so you shouldn't be affected.
I'm experiencing the issue on 3.3.4 :-(
-Patrick
More information about the syslog-ng
mailing list