]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip_outbound_publish: Potential crash due to off nominal path 50/2750/2
authorKevin Harwell <kharwell@digium.com>
Tue, 3 May 2016 20:31:19 +0000 (15:31 -0500)
committerKevin Harwell <kharwell@digium.com>
Thu, 5 May 2016 21:41:50 +0000 (16:41 -0500)
It was possible for the explicit publish destroy function to be called without
the pjsip client ever being initialized. This fix checks to make sure there is
a client to destroy before attempting.

Change-Id: I8eea1bfa3bd472149bfc255310be2a6248688f5c

res/res_pjsip_outbound_publish.c

index 0265c424e322e2d6ef808712290874f959c68c12..ed06a33d1ae9db9a35b6f368719696b33051dc10 100644 (file)
@@ -701,8 +701,15 @@ static int explicit_publish_destroy(void *data)
 {
        struct ast_sip_outbound_publish_client *client = data;
 
-       pjsip_publishc_destroy(client->client);
-       ao2_ref(client, -1);
+       /*
+        * If there is no pjsip publishing client then we obviously don't need
+        * to destroy it. Also, the ref for the Asterisk publishing client that
+        * pjsip had would not exist or should already be gone as well.
+        */
+       if (client->client) {
+               pjsip_publishc_destroy(client->client);
+               ao2_ref(client, -1);
+       }
 
        return 0;
 }