diff options
author | Jenkins2 <jenkins2@gerrit.asterisk.org> | 2018-02-05 13:05:40 -0600 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2018-02-05 13:05:40 -0600 |
commit | 0a784a91a37061e29702db5a1d4e2c753a2567f3 (patch) | |
tree | 55f98be9b73d7f291c0c82e62af4e690fa330bba /res | |
parent | 2d90b1efd9f41a133f44fc562415b9e2e34af2df (diff) | |
parent | bef49d90c1cc013aba248c757cd3db2436175c03 (diff) |
Merge "res_sorcery_realtime.c: Fix ref leak if object failed to apply."
Diffstat (limited to 'res')
-rw-r--r-- | res/res_sorcery_realtime.c | 5 |
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); } |