avformat/mux: Check pkt->stream_index before using it
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Thu, 7 May 2020 22:46:10 +0000 (00:46 +0200)
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Sat, 16 May 2020 00:40:23 +0000 (02:40 +0200)
This commit stops using pkt->stream_index as index in an AVFormatContext's
streams array before actually comparing the value with the count of
streams in said array. 96e5e6abb9851d7a26ba21703955d5826ac857c0 used
pkt->stream_index in prepare_input_packet() before checking and
64063512227c4c87a7d16a1076481dc6baf19841 did likewise in
write_packets_common().

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
libavformat/mux.c

index 41659b1..f2de73a 100644 (file)
@@ -761,12 +761,13 @@ static int check_packet(AVFormatContext *s, AVPacket *pkt)
 
 static int prepare_input_packet(AVFormatContext *s, AVPacket *pkt)
 {
+    AVStream *st;
     int ret;
-    AVStream *st = s->streams[pkt->stream_index];
 
     ret = check_packet(s, pkt);
     if (ret < 0)
         return ret;
+    st = s->streams[pkt->stream_index];
 
 #if !FF_API_COMPUTE_PKT_FIELDS2 || !FF_API_LAVF_AVCTX
     /* sanitize the timestamps */
@@ -1176,10 +1177,11 @@ static int write_packets_from_bsfs(AVFormatContext *s, AVStream *st, AVPacket *p
 
 static int write_packets_common(AVFormatContext *s, AVPacket *pkt, int interleaved)
 {
-    AVStream *st = s->streams[pkt->stream_index];
+    AVStream *st;
     int ret = prepare_input_packet(s, pkt);
     if (ret < 0)
         return ret;
+    st = s->streams[pkt->stream_index];
 
     ret = check_bitstream(s, st, pkt);
     if (ret < 0)