]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip_mwi: Fix off-nominal endpoint ao2 ref leak in mwi_get_notify_data
authorAlexei Gradinari <alex2grad@gmail.com>
Mon, 29 Dec 2025 17:14:04 +0000 (12:14 -0500)
committerAlexei Gradinari <alex2grad@gmail.com>
Tue, 30 Dec 2025 15:28:47 +0000 (15:28 +0000)
Delay acquisition of the ast_sip_endpoint reference in mwi_get_notify_data()
to avoid an ao2 ref leak on early-return error paths.

Move ast_sip_subscription_get_endpoint() to just before first use so all
acquired references are properly cleaned up.

Fixes: #1675
res/res_pjsip_mwi.c

index 22c7a1f345167fc5709c78a31170cfef217c6e89..854ee44597a0d016128219b3771b227ce84564ce 100644 (file)
@@ -1045,7 +1045,7 @@ static void *mwi_get_notify_data(struct ast_sip_subscription *sub)
        struct mwi_subscription *mwi_sub;
        struct ast_datastore *mwi_datastore;
        struct ast_sip_aor *aor;
-       struct ast_sip_endpoint *endpoint = ast_sip_subscription_get_endpoint(sub);
+       struct ast_sip_endpoint *endpoint = NULL;
 
        mwi_datastore = ast_sip_subscription_get_datastore(sub, MWI_DATASTORE);
        if (!mwi_datastore) {
@@ -1059,6 +1059,7 @@ static void *mwi_get_notify_data(struct ast_sip_subscription *sub)
                return NULL;
        }
 
+       endpoint = ast_sip_subscription_get_endpoint(sub);
        if ((aor = find_aor_for_resource(endpoint, ast_sip_subscription_get_resource_name(sub)))) {
                pjsip_dialog *dlg = ast_sip_subscription_get_dialog(sub);
                pjsip_sip_uri *sip_uri = ast_sip_subscription_get_sip_uri(sub);