summaryrefslogtreecommitdiff
path: root/res
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2018-02-02 15:43:34 -0600
committerRichard Mudgett <rmudgett@digium.com>2018-02-02 17:46:39 -0600
commitbef49d90c1cc013aba248c757cd3db2436175c03 (patch)
tree03b7a635a852df035589351dd6c46cc1de7e1229 /res
parent4142eacfef109d5ac850deee6027a81f37fcc314 (diff)
res_sorcery_realtime.c: Fix ref leak if object failed to apply.
Change-Id: I3c7106ff77009754725cee790eadf5da44154ab6
Diffstat (limited to 'res')
-rw-r--r--res/res_sorcery_realtime.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/res/res_sorcery_realtime.c b/res/res_sorcery_realtime.c
index 29fbeb968..101034009 100644
--- a/res/res_sorcery_realtime.c
+++ b/res/res_sorcery_realtime.c
@@ -176,6 +176,7 @@ static void *sorcery_realtime_retrieve_fields(const struct ast_sorcery *sorcery,
if (!id
|| !(object = ast_sorcery_alloc(sorcery, type, id->value))
|| ast_sorcery_objectset_apply(sorcery, object, objectset)) {
+ ao2_cleanup(object);
return NULL;
}
@@ -233,7 +234,9 @@ static void sorcery_realtime_retrieve_multiple(const struct ast_sorcery *sorcery
objectset = sorcery_realtime_filter_objectset(objectset, &id, sorcery, type);
- if (id && (object = ast_sorcery_alloc(sorcery, type, id->value)) && !ast_sorcery_objectset_apply(sorcery, object, objectset)) {
+ if (id
+ && (object = ast_sorcery_alloc(sorcery, type, id->value))
+ && !ast_sorcery_objectset_apply(sorcery, object, objectset)) {
ao2_link(objects, object);
}