[Asterisk-code-review] res pjsip pubsub: Fix multiple leaks on failure to append ve... (asterisk[15])
Corey Farrell
asteriskteam at digium.com
Mon Nov 6 17:59:53 CST 2017
Corey Farrell has uploaded this change for review. ( https://gerrit.asterisk.org/7082
Change subject: res_pjsip_pubsub: Fix multiple leaks on failure to append vectors.
......................................................................
res_pjsip_pubsub: Fix multiple leaks on failure to append vectors.
Change-Id: I68ece0073ea79667ca41eb10405f516f1d30d482
---
M res/res_pjsip_pubsub.c
1 file changed, 19 insertions(+), 5 deletions(-)
git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/82/7082/1
diff --git a/res/res_pjsip_pubsub.c b/res/res_pjsip_pubsub.c
index 62b1879..4571333 100644
--- a/res/res_pjsip_pubsub.c
+++ b/res/res_pjsip_pubsub.c
@@ -938,7 +938,9 @@
}
ast_debug(2, "Subscription to leaf resource %s resulted in success. Adding to parent %s\n",
resource, parent->resource);
- AST_VECTOR_APPEND(&parent->children, current);
+ if (AST_VECTOR_APPEND(&parent->children, current)) {
+ tree_node_destroy(current);
+ }
} else {
ast_debug(2, "Subscription to leaf resource %s resulted in error response %d\n",
resource, resp);
@@ -953,7 +955,9 @@
build_node_children(endpoint, handler, child_list, current, visited);
if (AST_VECTOR_SIZE(¤t->children) > 0) {
ast_debug(1, "List %s had no successful children.\n", resource);
- AST_VECTOR_APPEND(&parent->children, current);
+ if (AST_VECTOR_APPEND(&parent->children, current)) {
+ tree_node_destroy(current);
+ }
} else {
ast_debug(2, "List %s had successful children. Adding to parent %s\n",
resource, parent->resource);
@@ -1194,6 +1198,8 @@
if (AST_VECTOR_APPEND(&sub->children, child)) {
ast_debug(1, "Child subscription to resource %s could not be appended\n",
child_node->resource);
+ destroy_subscription(child);
+ ao2_cleanup(tree);
}
}
@@ -2139,7 +2145,9 @@
bp->part->body = body;
pj_list_insert_before(&bp->part->hdr, bp->cid);
- AST_VECTOR_APPEND(parts, bp);
+ if (AST_VECTOR_APPEND(parts, bp)) {
+ ast_free(bp);
+ }
}
/*!
@@ -4602,7 +4610,10 @@
ast_log(LOG_WARNING, "Ignoring duplicated list item '%s'\n", item);
continue;
}
- if (AST_VECTOR_APPEND(&list->items, ast_strdup(item))) {
+
+ item = ast_strdup(item);
+ if (!item || AST_VECTOR_APPEND(&list->items, item)) {
+ ast_free(item);
return -1;
}
}
@@ -4738,7 +4749,10 @@
ast_copy_string(list->event, event, sizeof(list->event));
for (i = 0; i < num_resources; ++i) {
- if (AST_VECTOR_APPEND(&list->items, ast_strdup(resources[i]))) {
+ char *resource = ast_strdup(resources[i]);
+
+ if (!resource || AST_VECTOR_APPEND(&list->items, resource)) {
+ ast_free(resource);
return -1;
}
}
--
To view, visit https://gerrit.asterisk.org/7082
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: 15
Gerrit-MessageType: newchange
Gerrit-Change-Id: I68ece0073ea79667ca41eb10405f516f1d30d482
Gerrit-Change-Number: 7082
Gerrit-PatchSet: 1
Gerrit-Owner: Corey Farrell <git at cfware.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20171106/71932034/attachment.html>
More information about the asterisk-code-review
mailing list