From 2a34bb1e11d9c812dd32d0fb16bed5d0ffc78cf0 Mon Sep 17 00:00:00 2001 From: George Joseph <gjoseph@digium.com> Date: Mon, 31 Jan 2022 06:09:09 -0700 Subject: [PATCH] res_pjsip_outbound_authenticator_digest: Prevent ABRT on cleanup 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 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/res/res_pjsip_outbound_authenticator_digest.c b/res/res_pjsip_outbound_authenticator_digest.c index e6702b4df2..4821082a9f 100644 --- a/res/res_pjsip_outbound_authenticator_digest.c +++ b/res/res_pjsip_outbound_authenticator_digest.c @@ -563,8 +563,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); -- GitLab