1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
From ea62f400dd38db012ed01f16f85a4b928625fa4d Mon Sep 17 00:00:00 2001
From: Antal Nemes <antal.nemes@balabit.com>
Date: Tue, 2 Apr 2019 10:24:20 +0200
Subject: [PATCH] gorupingby: fix memory leak
Due to missing unref, the filter expressions were leaked.
Also, init functions were not called either.
Signed-off-by: Antal Nemes <antal.nemes@balabit.com>
---
modules/dbparser/groupingby.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/modules/dbparser/groupingby.c b/modules/dbparser/groupingby.c
index a8509aad86..a96b9a68c1 100644
--- a/modules/dbparser/groupingby.c
+++ b/modules/dbparser/groupingby.c
@@ -419,6 +419,14 @@ grouping_by_init(LogPipe *s)
self->tick.expires.tv_sec++;
self->tick.expires.tv_nsec = 0;
iv_timer_register(&self->tick);
+
+ if (self->trigger_condition_expr && !filter_expr_init(self->trigger_condition_expr, cfg))
+ return FALSE;
+ if (self->where_condition_expr && !filter_expr_init(self->where_condition_expr, cfg))
+ return FALSE;
+ if (self->having_condition_expr && !filter_expr_init(self->having_condition_expr, cfg))
+ return FALSE;
+
return stateful_parser_init_method(s);
}
@@ -463,6 +471,10 @@ grouping_by_free(LogPipe *s)
synthetic_message_free(self->synthetic_message);
timer_wheel_free(self->timer_wheel);
stateful_parser_free_method(s);
+
+ filter_expr_unref(self->trigger_condition_expr);
+ filter_expr_unref(self->where_condition_expr);
+ filter_expr_unref(self->having_condition_expr);
}
LogParser *
|