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