From dc71d87c73cbffcedcc657e710fcd04b97bb523b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Tue, 7 Dec 2021 12:19:27 -0500 Subject: [PATCH] media_encoder: avoid segfault on nullptr Caught by ut_media_encoder: READ of size 8 at 0x602000029818 thread T0 #0 0x5649e914d6e0 in jami::MediaEncoder::send(AVPacket&, int) media/media_encoder.cpp:504 #1 0x5649e914d05c in jami::MediaEncoder::encode(AVFrame*, int) media/media_encoder.cpp:480 #2 0x5649e8cac119 in jami::test::MediaEncoderTest::testMultiStream() media/test_media_encoder.cpp:183 outputCtx_->nb_streams can be different from encoders.size(), and if not checked can lead to a crash Change-Id: I3c0217ec3e1d50950bf46989e0dd6797fee8972e --- src/media/media_encoder.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/media/media_encoder.cpp b/src/media/media_encoder.cpp index a826133688..dd9b059897 100644 --- a/src/media/media_encoder.cpp +++ b/src/media/media_encoder.cpp @@ -495,7 +495,8 @@ MediaEncoder::send(AVPacket& pkt, int streamIdx) } if (streamIdx < 0) streamIdx = currentStreamIdx_; - if (streamIdx >= 0 and static_cast<size_t>(streamIdx) < encoders_.size()) { + if (streamIdx >= 0 and static_cast<size_t>(streamIdx) < encoders_.size() + and static_cast<unsigned int>(streamIdx) < outputCtx_->nb_streams) { auto encoderCtx = encoders_[streamIdx]; pkt.stream_index = streamIdx; if (pkt.pts != AV_NOPTS_VALUE) -- GitLab