[Asterisk-code-review] Stasis/ARI: Fix off-nominal path json memory leaks. (asterisk[13])

Richard Mudgett asteriskteam at digium.com
Fri Nov 3 13:13:42 CDT 2017


Richard Mudgett has uploaded this change for review. ( https://gerrit.asterisk.org/6984


Change subject: Stasis/ARI: Fix off-nominal path json memory leaks.
......................................................................

Stasis/ARI: Fix off-nominal path json memory leaks.

Change-Id: Id569c624c426e3b22a99936473c730592d8b83fb
---
M main/sorcery.c
M res/ari/resource_asterisk.c
M res/ari/resource_sounds.c
M res/res_ari.c
M res/stasis/messaging.c
5 files changed, 15 insertions(+), 2 deletions(-)



  git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/84/6984/1

diff --git a/main/sorcery.c b/main/sorcery.c
index 713b038..1bdf2c2 100644
--- a/main/sorcery.c
+++ b/main/sorcery.c
@@ -1597,6 +1597,7 @@
 	int res = 0;
 
 	if (!object_type || !json) {
+		ast_json_unref(json);
 		return NULL;
 	}
 
diff --git a/res/ari/resource_asterisk.c b/res/ari/resource_asterisk.c
index 30684d2..dafe9a6 100644
--- a/res/ari/resource_asterisk.c
+++ b/res/ari/resource_asterisk.c
@@ -435,6 +435,10 @@
 	struct ast_json *json;
 
 	json = ast_json_array_create();
+	if (!json) {
+		ast_ari_response_alloc_failed(response);
+		return;
+	}
 	ast_update_module_list_data(&process_module_list, NULL, json);
 
 	ast_ari_response_ok(response, json);
@@ -507,6 +511,7 @@
 		ast_ari_response_error(
 			response, 409, "Conflict",
 			"Module information could not be retrieved");
+		ast_json_unref(json);
 		return;
 	}
 
@@ -669,10 +674,12 @@
 	if (res == AST_LOGGER_FAILURE) {
 		ast_ari_response_error(response, 500, "Internal Server Error",
 			"Response body is not valid");
+		ast_json_unref(json);
 		return;
 	} else if (res == AST_LOGGER_ALLOC_ERROR) {
 		ast_ari_response_error(response, 500, "Internal Server Error",
 			"Allocation Failed");
+		ast_json_unref(json);
 		return;
 	}
 
diff --git a/res/ari/resource_sounds.c b/res/ari/resource_sounds.c
index 5a523d3..76a4d94 100644
--- a/res/ari/resource_sounds.c
+++ b/res/ari/resource_sounds.c
@@ -204,6 +204,7 @@
 
 	if (!ast_json_array_size(sounds_blob)) {
 		ast_ari_response_error(response, 404, "Not Found", "No sounds found that matched the query");
+		ast_json_unref(sounds_blob);
 		return;
 	}
 
diff --git a/res/res_ari.c b/res/res_ari.c
index 1ac5327..e4b50ab 100644
--- a/res/res_ari.c
+++ b/res/res_ari.c
@@ -983,9 +983,11 @@
 		struct ast_str *buf = ast_str_create(512);
 		char *str = ast_json_dump_string_format(body, ast_ari_json_format());
 
-		if (!buf) {
+		if (!buf || !str) {
 			ast_http_request_close_on_completion(ser);
 			ast_http_error(ser, 500, "Server Error", "Out of memory");
+			ast_json_free(str);
+			ast_free(buf);
 			goto request_failed;
 		}
 
diff --git a/res/stasis/messaging.c b/res/stasis/messaging.c
index 229a3a6..d2df3ff 100644
--- a/res/stasis/messaging.c
+++ b/res/stasis/messaging.c
@@ -266,6 +266,7 @@
 
 	json_vars = ast_json_array_create();
 	if (!json_vars) {
+		ast_msg_var_iterator_destroy(it_vars);
 		return NULL;
 	}
 
@@ -274,7 +275,8 @@
 
 		json_tuple = ast_json_pack("{s: s}", name, value);
 		if (!json_tuple) {
-			ast_json_free(json_vars);
+			ast_json_unref(json_vars);
+			ast_msg_var_iterator_destroy(it_vars);
 			return NULL;
 		}
 

-- 
To view, visit https://gerrit.asterisk.org/6984
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-MessageType: newchange
Gerrit-Change-Id: Id569c624c426e3b22a99936473c730592d8b83fb
Gerrit-Change-Number: 6984
Gerrit-PatchSet: 1
Gerrit-Owner: Richard Mudgett <rmudgett at digium.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20171103/19f33aeb/attachment.html>


More information about the asterisk-code-review mailing list