From b55ba90defa58fb71c0a518e64d9f80d4d3c09df Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Thu, 1 May 2014 08:30:52 -0400 Subject: [PATCH] fix 2 potential use after free errors --- libs/sofia-sip/libsofia-sip-ua/soa/soa.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/sofia-sip/libsofia-sip-ua/soa/soa.c b/libs/sofia-sip/libsofia-sip-ua/soa/soa.c index 7f272a8e6f..607331ffa6 100644 --- a/libs/sofia-sip/libsofia-sip-ua/soa/soa.c +++ b/libs/sofia-sip/libsofia-sip-ua/soa/soa.c @@ -559,8 +559,9 @@ int soa_base_set_params(soa_session_t *ss, tagi_t const *tags) ss->ss_srtp_integrity = srtp_integrity; if (!su_casematch(media_address, ss->ss_address)) { - su_free(ss->ss_home, (void *)ss->ss_address); + char const *addr = ss->ss_address; ss->ss_address = su_strdup(ss->ss_home, media_address); + su_free(ss->ss_home, (void *)addr); change_session = 1; } @@ -568,8 +569,9 @@ int soa_base_set_params(soa_session_t *ss, tagi_t const *tags) hold = "*"; if (!su_casematch(hold, ss->ss_hold)) { - su_free(ss->ss_home, (void *)ss->ss_hold); + char const *h = ss->ss_hold; ss->ss_hold = su_strdup(ss->ss_home, hold); + su_free(ss->ss_home, (void *)h); change_session = 1; }