From 58bd8825c8e8beffaec3406a2ea2a93f19412e5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Wed, 16 Apr 2014 12:06:45 -0400 Subject: [PATCH] sip: don't try to read port from uninitialised sockaddr Issue: #45431, #45416 --- daemon/src/sip/sdp.cpp | 9 +++++++-- daemon/src/sip/siptransport.cpp | 3 +-- daemon/src/sip/sipvoiplink.cpp | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/daemon/src/sip/sdp.cpp b/daemon/src/sip/sdp.cpp index baf845593c..147246149c 100644 --- a/daemon/src/sip/sdp.cpp +++ b/daemon/src/sip/sdp.cpp @@ -378,8 +378,13 @@ Sdp::updatePorts(const std::vector<pj_sockaddr> &sockets) { localAudioDataPort_ = pj_sockaddr_get_port(&sockets[0]); localAudioControlPort_ = pj_sockaddr_get_port(&sockets[1]); - localVideoDataPort_ = pj_sockaddr_get_port(&sockets[2]); - localVideoControlPort_ = pj_sockaddr_get_port(&sockets[3]); + if (sockets.size() > 3) { + localVideoDataPort_ = pj_sockaddr_get_port(&sockets[2]); + localVideoControlPort_ = pj_sockaddr_get_port(&sockets[3]); + } else { + localVideoDataPort_ = 0; + localVideoControlPort_ = 0; + } if (localSession_) { if (localSession_->media[0]) { diff --git a/daemon/src/sip/siptransport.cpp b/daemon/src/sip/siptransport.cpp index 8d5806ebb6..d4a6d17d3d 100644 --- a/daemon/src/sip/siptransport.cpp +++ b/daemon/src/sip/siptransport.cpp @@ -381,9 +381,8 @@ SipTransport::getSTUNAddresses(const SIPAccount &account, std::vector<pj_sockaddr> result(ip_num); for(size_t i=0; i<ip_num; i++) { - result[i].addr.sa_family = pj_AF_INET(); result[i].ipv4 = ipv4[i]; - WARN("STUN PORTS: %ld", pj_ntohs(ipv4[i].sin_port)); + WARN("STUN PORTS: %ld", pj_sockaddr_get_port(&result[i])); } return result; } diff --git a/daemon/src/sip/sipvoiplink.cpp b/daemon/src/sip/sipvoiplink.cpp index dd69d36b9f..2b3f8eb66a 100644 --- a/daemon/src/sip/sipvoiplink.cpp +++ b/daemon/src/sip/sipvoiplink.cpp @@ -199,7 +199,7 @@ void updateSDPFromSTUN(SIPCall &call, SIPAccount &account, const SipTransport &t std::vector<pj_sockaddr> stunPorts(transport.getSTUNAddresses(account, socketDescriptors)); // FIXME: get video sockets - stunPorts.resize(4); + //stunPorts.resize(4); account.setPublishedAddress(stunPorts[0]); // published IP MUST be updated first, since RTCP depends on it -- GitLab