]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
pjsip_configuration: Fix leak in persistent_endpoint_update_state. 51/551/2
authorCorey Farrell <git@cfware.com>
Sun, 31 May 2015 01:22:00 +0000 (21:22 -0400)
committerCorey Farrell <git@cfware.com>
Mon, 1 Jun 2015 08:08:50 +0000 (03:08 -0500)
The loop to find the first available contact of an endpoint grabbed
contact from the iterator, then checked for offline state.  This
caused the first contact after the state was found to leak a reference.

ASTERISK-25141

Change-Id: Id0f1d87410fc63742db0594eb4b18b36e99aec08

res/res_pjsip/pjsip_configuration.c

index 59598ecdf65f86c44bdd1c7c69afeb040f0e6958..4ce773563115ecb2b1e34da53f903f1925dc8445 100644 (file)
@@ -103,8 +103,7 @@ static int persistent_endpoint_update_state(void *obj, void *arg, void *data, in
        contacts = ast_sip_location_retrieve_contacts_from_aor_list(persistent->aors);
        if (contacts) {
                i = ao2_iterator_init(contacts, 0);
-               while ((contact = ao2_iterator_next(&i))
-                       && state == AST_ENDPOINT_OFFLINE) {
+               while (state == AST_ENDPOINT_OFFLINE && (contact = ao2_iterator_next(&i))) {
                        struct ast_sip_contact_status *contact_status;
                        const char *contact_id = ast_sorcery_object_get_id(contact);