diff --git a/src/Rtcp/RtcpFCI.cpp b/src/Rtcp/RtcpFCI.cpp index 8ed27670..6fcdcba9 100644 --- a/src/Rtcp/RtcpFCI.cpp +++ b/src/Rtcp/RtcpFCI.cpp @@ -432,7 +432,7 @@ FCI_TWCC::TwccPacketStatus FCI_TWCC::getPacketChunkList(size_t total_size) const CHECK(ptr < end); auto seq = getBaseSeq(); auto rtp_count = getPacketCount(); - for (uint8_t i = 0; i < rtp_count;) { + for (uint16_t i = 0; i < rtp_count;) { CHECK(ptr + RunLengthChunk::kSize <= end); RunLengthChunk *chunk = (RunLengthChunk *)ptr; if (!chunk->type) { diff --git a/webrtc/Sdp.cpp b/webrtc/Sdp.cpp index 7051e42f..89a9092c 100644 --- a/webrtc/Sdp.cpp +++ b/webrtc/Sdp.cpp @@ -267,16 +267,23 @@ void RtcSessionSdp::parse(const string &str) { static auto flag = registerAllItem(); RtcSdpBase *media = nullptr; auto lines = split(str, "\n"); - for(auto &line : lines){ + std::set line_set; + for (auto &line : lines) { trim(line); - if(line.size() < 3 || line[1] != '='){ + if (line.size() < 3 || line[1] != '=') { continue; } + + if (!line_set.emplace(line).second) { + continue; + } + auto key = line.substr(0, 1); auto value = line.substr(2); if (!strcasecmp(key.data(), "m")) { medias.emplace_back(RtcSdpBase()); media = &medias.back(); + line_set.clear(); } SdpItem::Ptr item;