From 0a336af724d09b91719e3ac2c98e6806b3f25228 Mon Sep 17 00:00:00 2001 From: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com> Date: Thu, 18 Dec 2014 15:20:43 -0500 Subject: [PATCH] daemon: fix possible null access during sdp modifications Refs #62705 Change-Id: I86844674ad6390c4b5c805c7458a563dc0b8d91b --- daemon/src/sip/sdp.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/daemon/src/sip/sdp.cpp b/daemon/src/sip/sdp.cpp index b25b3af157..1120087c55 100644 --- a/daemon/src/sip/sdp.cpp +++ b/daemon/src/sip/sdp.cpp @@ -856,7 +856,11 @@ void Sdp::addZrtpAttribute(pjmedia_sdp_media* media, std::string hash) void Sdp::addIceCandidates(unsigned media_index, const std::vector<std::string>& cands) { - assert(media_index < localSession_->media_count); + if (media_index >= localSession_->media_count) { + SFL_ERR("addIceCandidates failed: cannot access media#%u (may be deactivated)", media_index); + return; + } + auto media = localSession_->media[media_index]; for (const auto &item : cands) { @@ -872,8 +876,14 @@ std::vector<std::string> Sdp::getIceCandidates(unsigned media_index) const { auto session = remoteSession_ ? remoteSession_ : activeRemoteSession_; - assert(session); - assert(media_index < session->media_count); + if (not session) { + SFL_ERR("getIceCandidates failed: no remote session"); + return {}; + } + if (media_index >= session->media_count) { + SFL_ERR("getIceCandidates failed: cannot access media#%u (may be deactivated)", media_index); + return {}; + } auto media = session->media[media_index]; std::vector<std::string> candidates; -- GitLab