From 0e129eda08b4351675eccb294afa668a29c920dc Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Thu, 27 Dec 2018 14:11:03 -0500 Subject: [PATCH] TT#49600 fix offered crypto suite not being dropped via SDES-no fixes #678 Change-Id: I80ca6c268b7397e7901017a4a7000dd2b2b66bd6 --- daemon/call.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/daemon/call.c b/daemon/call.c index abd4d32b7..28381b766 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -1372,7 +1372,8 @@ static void __generate_crypto(const struct sdp_ng_flags *flags, struct call_medi // make sure our bit field is large enough assert(num_crypto_suites <= sizeof(types_offered) * 8); - for (GList *l = offered_cpq->head; l; l = l->next) { + GList *l = offered_cpq->head; + while (l) { struct crypto_params_sdes *offered_cps = l->data; if (flags->sdes_no && g_hash_table_lookup(flags->sdes_no, @@ -1381,6 +1382,12 @@ static void __generate_crypto(const struct sdp_ng_flags *flags, struct call_medi ilog(LOG_DEBUG, "Dropping offered crypto suite '%s' from offer " "due to 'SDES-no' option", offered_cps->params.crypto_suite->name); + + GList *next = l->next; + g_queue_delete_link(offered_cpq, l); + crypto_params_sdes_free(offered_cps); + l = next; + continue; } @@ -1397,6 +1404,8 @@ static void __generate_crypto(const struct sdp_ng_flags *flags, struct call_medi types_offered |= 1 << cps->params.crypto_suite->idx; __sdes_flags(cps, flags); + + l = l->next; } // generate crypto suite offers for any types that we haven't seen above