mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
fftools/ffprobe: Loop over correct number of streams when flushing decoders
Some formats like FLV can dynamically add streams during packet reading. FFprobe does check for this and reallocates the global stream info, but does not reallocate InputFrame's streams and decoders when this happens, which, as a result, could have caused flushing to occur on an out of bounds stream index, since the flush loop iterates over fmt_ctx's nb_streams, and not ifile's, despite using ifile's streams. This fixes an out of bounds read and segfult. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is contained in:
parent
202b7a9ae7
commit
d1366c4167
@ -2893,7 +2893,7 @@ static int read_interval_packets(WriterContext *w, InputFile *ifile,
|
||||
}
|
||||
av_packet_unref(pkt);
|
||||
//Flush remaining frames that are cached in the decoder
|
||||
for (i = 0; i < fmt_ctx->nb_streams; i++) {
|
||||
for (i = 0; i < ifile->nb_streams; i++) {
|
||||
pkt->stream_index = i;
|
||||
if (do_read_frames) {
|
||||
while (process_frame(w, ifile, frame, pkt, &(int){1}) > 0);
|
||||
|
Loading…
Reference in New Issue
Block a user