From: Kevin Harwell Date: Tue, 3 May 2016 20:31:19 +0000 (-0500) Subject: res_pjsip_outbound_publish: Potential crash due to off nominal path X-Git-Tag: 13.10.0-rc1~74^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1b5c91b7be1020754ca724e488c9fb733dbce99d;p=thirdparty%2Fasterisk.git res_pjsip_outbound_publish: Potential crash due to off nominal path 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 --- diff --git a/res/res_pjsip_outbound_publish.c b/res/res_pjsip_outbound_publish.c index 60f9bbb177..bf933cb321 100644 --- a/res/res_pjsip_outbound_publish.c +++ b/res/res_pjsip_outbound_publish.c @@ -687,8 +687,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; }