From 9927baa7d8b0564444758a936b052cd55381cfcf Mon Sep 17 00:00:00 2001 From: Mike Jerris Date: Wed, 26 Sep 2018 15:07:38 +0000 Subject: [PATCH] FS-11412: [core] Fix crash caused by missing or malformed ice candidates in sdp --- src/switch_core_media.c | 2 +- src/switch_rtp.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/switch_core_media.c b/src/switch_core_media.c index 1e8ab68efb..fbd7e7b771 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -4257,7 +4257,7 @@ static switch_status_t check_ice(switch_media_handle_t *smh, switch_media_type_t for (ai = 0; ai < engine->cand_acl_count; ai++) { for (i = 0; i < engine->ice_in.cand_idx[cid]; i++) { - int is_relay = !strcmp(engine->ice_in.cands[i][cid].cand_type, "relay"); + int is_relay = engine->ice_in.cands[i][cid].cand_type && !strcmp(engine->ice_in.cands[i][cid].cand_type, "relay"); if (relay_ok != is_relay) continue; diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 29e39e7277..9f4de55f31 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -1263,7 +1263,8 @@ static void handle_ice(switch_rtp_t *rtp_session, switch_rtp_ice_t *ice, void *d } - if (!strcasecmp(ice->ice_params->cands[ice->ice_params->chosen[ice->proto]][ice->proto].cand_type, "relay")) { + if (ice->ice_params->cands[ice->ice_params->chosen[ice->proto]][ice->proto].cand_type && + !strcasecmp(ice->ice_params->cands[ice->ice_params->chosen[ice->proto]][ice->proto].cand_type, "relay")) { do_adj++; } }