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 *
