]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip_outbound_authenticator_digest: Prevent ABRT on cleanup
authorGeorge Joseph <gjoseph@digium.com>
Mon, 31 Jan 2022 13:09:09 +0000 (06:09 -0700)
committerJoshua Colp <jcolp@sangoma.com>
Tue, 1 Feb 2022 13:39:46 +0000 (07:39 -0600)
In dev mode, if you call pjsip_auth_clt_deinit() with an auth_sess
that hasn't been initialized, it'll assert and abort.  If
digest_create_request_with_auth() fails to find the proper
auth object however, it jumps to its cleanup which does exactly
that.  So now we no longer attempt to call pjsip_auth_clt_deinit()
if we never actually initialized it.

ASTERISK-29888

Change-Id: Ib6171c25c9fe8e61cc8d11129e324c021bc30b62

res/res_pjsip_outbound_authenticator_digest.c

index b953c8d3088cb6be861667ab43579ac2e4ca803b..39b0e3f0d22bbd5d372cb40947390b8d47f1a325 100644 (file)
@@ -560,8 +560,10 @@ static int digest_create_request_with_auth(const struct ast_sip_auth_vector *aut
 
 cleanup:
 #if defined(HAVE_PJSIP_AUTH_CLT_DEINIT)
-       /* Release any cached auths */
-       pjsip_auth_clt_deinit(&auth_sess);
+       /* If we initialized the auth_sess, clean it up */
+       if (auth_sess.endpt) {
+               pjsip_auth_clt_deinit(&auth_sess);
+       }
 #endif
 
        ast_sip_cleanup_auth_objects_vector(&auth_objects_vector);