]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_sorcery_realtime.c: Fix ref leak if object failed to apply.
authorRichard Mudgett <rmudgett@digium.com>
Fri, 2 Feb 2018 21:43:34 +0000 (15:43 -0600)
committerRichard Mudgett <rmudgett@digium.com>
Fri, 2 Feb 2018 23:46:29 +0000 (17:46 -0600)
Change-Id: I3c7106ff77009754725cee790eadf5da44154ab6

res/res_sorcery_realtime.c

index 29fbeb9683907eed5881a527d79d3352826de50f..101034009f2c9f55bbc49ce7a4c4f5e7833a51ff 100644 (file)
@@ -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);
                }