From 3b6eae74415cb14cb4fb96dd54725bde2f0d0abd Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 1 Oct 2012 15:49:15 +0200 Subject: [PATCH] Add check to prevent crash if something wrong happens when sending Re-INVITE for ICE. --- coreapi/misc.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/coreapi/misc.c b/coreapi/misc.c index 1c026948e..6f7aff698 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -783,10 +783,14 @@ void linphone_core_update_local_media_description_from_ice(SalMediaDescription * int rtp_port, rtcp_port; memset(stream->ice_remote_candidates, 0, sizeof(stream->ice_remote_candidates)); ice_check_list_selected_valid_remote_candidate(cl, &rtp_addr, &rtp_port, &rtcp_addr, &rtcp_port); - strncpy(stream->ice_remote_candidates[0].addr, rtp_addr, sizeof(stream->ice_remote_candidates[0].addr)); - stream->ice_remote_candidates[0].port = rtp_port; - strncpy(stream->ice_remote_candidates[1].addr, rtcp_addr, sizeof(stream->ice_remote_candidates[1].addr)); - stream->ice_remote_candidates[1].port = rtcp_port; + if ((rtp_addr != NULL) && (rtcp_addr != NULL)) { + strncpy(stream->ice_remote_candidates[0].addr, rtp_addr, sizeof(stream->ice_remote_candidates[0].addr)); + stream->ice_remote_candidates[0].port = rtp_port; + strncpy(stream->ice_remote_candidates[1].addr, rtcp_addr, sizeof(stream->ice_remote_candidates[1].addr)); + stream->ice_remote_candidates[1].port = rtcp_port; + } else { + ms_error("ice: Selected valid remote candidates should be present if the check list is in the Completed state"); + } } } }