diff --git a/main/sorcery.c b/main/sorcery.c
index 6694167cd23365f015c9959f4d7fa730a060d7b2..01b77918d826ace2af7f5e1da059b10695055101 100644
--- a/main/sorcery.c
+++ b/main/sorcery.c
@@ -1633,6 +1633,7 @@ struct ast_json *ast_sorcery_objectset_json_create(const struct ast_sorcery *sor
 	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 e76eb02bccce632330f4204879afdd5eb73b0149..5c6a35af6ccfb98e0cb19ecc6e5854cfa4aa5af9 100644
--- a/res/ari/resource_asterisk.c
+++ b/res/ari/resource_asterisk.c
@@ -433,6 +433,10 @@ void ast_ari_asterisk_list_modules(struct ast_variable *headers,
 	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);
@@ -505,6 +509,7 @@ void ast_ari_asterisk_get_module(struct ast_variable *headers,
 		ast_ari_response_error(
 			response, 409, "Conflict",
 			"Module information could not be retrieved");
+		ast_json_unref(json);
 		return;
 	}
 
@@ -667,10 +672,12 @@ void ast_ari_asterisk_list_log_channels(struct ast_variable *headers,
 	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 59ace5d81fab7f4e26eaaf6cf5f2d71cda677129..2cb35b620ffc93781e388690e6faf78d10974d0c 100644
--- a/res/ari/resource_sounds.c
+++ b/res/ari/resource_sounds.c
@@ -202,6 +202,7 @@ void ast_ari_sounds_list(struct ast_variable *headers,
 
 	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 5145499bef5b6dc769ccd81ba9744691168f91db..7c12d3961e641d324f494ac58fa0b52915f8aae8 100644
--- a/res/res_ari.c
+++ b/res/res_ari.c
@@ -984,9 +984,11 @@ static int ast_ari_callback(struct ast_tcptls_session_instance *ser,
 		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 8dfd99608383fe8c996a40759ecc698d48182f29..d398bb6d461b4a16edf00e6a04c06138b9d2a766 100644
--- a/res/stasis/messaging.c
+++ b/res/stasis/messaging.c
@@ -264,6 +264,7 @@ static struct ast_json *msg_to_json(struct ast_msg *msg)
 
 	json_vars = ast_json_array_create();
 	if (!json_vars) {
+		ast_msg_var_iterator_destroy(it_vars);
 		return NULL;
 	}
 
@@ -272,7 +273,8 @@ static struct ast_json *msg_to_json(struct ast_msg *msg)
 
 		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;
 		}