From 922fbafda0f9ba90098a881371a73ccba4508bcd Mon Sep 17 00:00:00 2001
From: George Joseph <gjoseph@digium.com>
Date: Mon, 26 Nov 2018 15:18:00 -0700
Subject: [PATCH] test_cel:  Plug a few ref leaks

These are only a few of the leaks.  The large number of macros
and return paths in this file would make a weeks worth of work
to plug them all.

Change-Id: Ie2369fa944023d44767871c5c30974cb077ffb56
---
 tests/test_cel.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/tests/test_cel.c b/tests/test_cel.c
index 1461f76e36..5410d730e2 100644
--- a/tests/test_cel.c
+++ b/tests/test_cel.c
@@ -1792,7 +1792,7 @@ static int append_expected_event(
 
 static void test_sub(struct ast_event *event)
 {
-	struct ast_event *event_dup = ao2_dup_event(event);
+	RAII_VAR(struct ast_event *, event_dup, ao2_dup_event(event), ao2_cleanup);
 	const char *chan_name;
 	SCOPED_MUTEX(mid_test_lock, &mid_test_sync_lock);
 
@@ -1857,11 +1857,15 @@ static int test_cel_init_cb(struct ast_test_info *info, struct ast_test *test)
  */
 static int test_cel_peer_strings_match(const char *str1, const char *str2)
 {
-	struct ao2_container *intersection = ast_str_container_alloc(11);
+	RAII_VAR(struct ao2_container *, intersection, ast_str_container_alloc(11), ao2_cleanup);
 	RAII_VAR(char *, str1_dup, ast_strdup(str1), ast_free);
 	RAII_VAR(char *, str2_dup, ast_strdup(str2), ast_free);
 	char *chan;
 
+	if (!intersection) {
+		return 1;
+	}
+
 	while ((chan = strsep(&str1_dup, ","))) {
 		ast_str_container_add(intersection, chan);
 	}
@@ -2142,6 +2146,10 @@ static int unload_module(void)
 
 	ast_channel_unregister(&test_cel_chan_tech);
 
+	ao2_cleanup(cel_expected_events);
+	cel_expected_events = NULL;
+	ao2_cleanup(cel_received_events);
+	cel_received_events = NULL;
 	ao2_cleanup(cel_test_config);
 	cel_test_config = NULL;
 
-- 
GitLab