From a862573220480e767ce2d5738e2fe4cfe2a7214b Mon Sep 17 00:00:00 2001 From: johzzy Date: Thu, 25 Nov 2021 07:33:41 +0800 Subject: [PATCH] RTC: Fix crash when pkt->payload() if pkt is nullptr (#2751) --- trunk/src/app/srs_app_rtc_source.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/trunk/src/app/srs_app_rtc_source.cpp b/trunk/src/app/srs_app_rtc_source.cpp index 590d479dc..9c1bf3c52 100644 --- a/trunk/src/app/srs_app_rtc_source.cpp +++ b/trunk/src/app/srs_app_rtc_source.cpp @@ -1567,6 +1567,10 @@ srs_error_t SrsRtmpFromRtcBridger::packet_video_rtmp(const uint16_t start, const uint16_t sn = start + i; uint16_t index = cache_index(sn); SrsRtpPacket* pkt = cache_video_pkts_[index].pkt; + + // fix crash when pkt->payload() if pkt is nullptr; + if (!pkt) continue; + // calculate nalu len SrsRtpFUAPayload2* fua_payload = dynamic_cast(pkt->payload()); if (fua_payload && fua_payload->size > 0) { @@ -1624,6 +1628,10 @@ srs_error_t SrsRtmpFromRtcBridger::packet_video_rtmp(const uint16_t start, const for (uint16_t i = 0; i < cnt; ++i) { uint16_t index = cache_index((start + i)); SrsRtpPacket* pkt = cache_video_pkts_[index].pkt; + + // fix crash when pkt->payload() if pkt is nullptr; + if (!pkt) continue; + cache_video_pkts_[index].in_use = false; cache_video_pkts_[index].pkt = NULL; cache_video_pkts_[index].ts = 0;