diff --git a/channels/sip/dialplan_functions.c b/channels/sip/dialplan_functions.c
index e21bb2c240c235c1ca45ad1cba36015734629a14..59e841df478453f61b3ef165ad2769f03e162062 100644
--- a/channels/sip/dialplan_functions.c
+++ b/channels/sip/dialplan_functions.c
@@ -484,6 +484,9 @@ done:
 		dialog_unlink_all(p);
 		dialog_unref(p, "Destroy test object");
 	}
+	if (chan) {
+		ast_channel_unref(chan);
+	}
 	ast_rtp_engine_unregister(&test_engine);
 	return res;
 }
diff --git a/tests/test_config.c b/tests/test_config.c
index d737108604bb1727bad1251b1df0ef6794caa678..8675cb8906f99985558319a924ce5bce018971cb 100644
--- a/tests/test_config.c
+++ b/tests/test_config.c
@@ -1038,6 +1038,7 @@ AST_TEST_DEFINE(config_hook)
 	res = AST_TEST_PASS;
 
 out:
+	ast_config_hook_unregister("test_hook");
 	delete_config_file();
 	return res;
 }
@@ -1675,6 +1676,8 @@ AST_TEST_DEFINE(config_options_test)
 	configs.codeccapopt = NULL;
 	ast_string_field_free_memory(&defaults);
 	ast_string_field_free_memory(&configs);
+	aco_info_destroy(&cfg_info);
+	ao2_global_obj_release(global_obj);
 	return res;
 }
 
diff --git a/tests/test_core_format.c b/tests/test_core_format.c
index a697f8e7d599e1cc2c943a72be60a6b418333d96..164dff81fd36db8c0a1cb03120b8ce3667972364 100644
--- a/tests/test_core_format.c
+++ b/tests/test_core_format.c
@@ -858,6 +858,7 @@ AST_TEST_DEFINE(format_attribute_set_without_interface)
 {
 	RAII_VAR(struct ast_codec *, codec, NULL, ao2_cleanup);
 	RAII_VAR(struct ast_format *, format, NULL, ao2_cleanup);
+	struct ast_format *attr_set;
 
 	switch (cmd) {
 	case TEST_INIT:
@@ -883,10 +884,12 @@ AST_TEST_DEFINE(format_attribute_set_without_interface)
 		return AST_TEST_FAIL;
 	}
 
-	if (!ast_format_attribute_set(format, "bees", "cool")) {
+	attr_set = ast_format_attribute_set(format, "bees", "cool");
+	if (!attr_set) {
 		ast_test_status_update(test, "Successfully set an attribute on a format without an interface\n");
 		return AST_TEST_FAIL;
 	}
+	ao2_cleanup(attr_set);
 
 	return AST_TEST_PASS;
 }
diff --git a/tests/test_stream.c b/tests/test_stream.c
index fdb9885849e1f7181993c58cd8d8b5f98e0c1326..28983e05cce39b1ccc1bfc5cf57bfd96bde341d2 100644
--- a/tests/test_stream.c
+++ b/tests/test_stream.c
@@ -1522,7 +1522,7 @@ static int load_stream_readqueue(struct ast_channel *chan, int frames)
 		}
 		f.stream_num = pvt->frame_count % pvt->streams;
 		f.seqno = pvt->frame_count;
-		ast_queue_frame(chan, ast_frdup(&f));
+		ast_queue_frame(chan, &f);
 		pvt->frame_count++;
 	}
 
diff --git a/tests/test_taskprocessor.c b/tests/test_taskprocessor.c
index be48f92488f08af02bade50e7cb88fde1df2bb43..ad2074cb8d813c6d87bd71e9fc09eb881b1c2cdf 100644
--- a/tests/test_taskprocessor.c
+++ b/tests/test_taskprocessor.c
@@ -677,7 +677,7 @@ AST_TEST_DEFINE(taskprocessor_push_local)
 {
 	RAII_VAR(struct ast_taskprocessor *, tps, NULL,
 		ast_taskprocessor_unreference);
-	struct task_data *task_data;
+	RAII_VAR(struct task_data *, task_data, NULL, ao2_cleanup);
 	int local_data;
 	int res;