mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
Fix possible crash when decoding mpeg streams.
This reverts 2cf8355f98
,
fixes ticket 329.
This commit is contained in:
parent
64160ef392
commit
31fe5d9825
6
ffmpeg.c
6
ffmpeg.c
@ -335,6 +335,7 @@ typedef struct InputFile {
|
|||||||
int eof_reached; /* true if eof reached */
|
int eof_reached; /* true if eof reached */
|
||||||
int ist_index; /* index of first stream in ist_table */
|
int ist_index; /* index of first stream in ist_table */
|
||||||
int buffer_size; /* current total buffer size */
|
int buffer_size; /* current total buffer size */
|
||||||
|
int nb_streams;
|
||||||
int64_t ts_offset;
|
int64_t ts_offset;
|
||||||
} InputFile;
|
} InputFile;
|
||||||
|
|
||||||
@ -2063,7 +2064,7 @@ static int transcode(AVFormatContext **output_files,
|
|||||||
int si = stream_maps[i].stream_index;
|
int si = stream_maps[i].stream_index;
|
||||||
|
|
||||||
if (fi < 0 || fi > nb_input_files - 1 ||
|
if (fi < 0 || fi > nb_input_files - 1 ||
|
||||||
si < 0 || si > input_files[fi].ctx->nb_streams - 1) {
|
si < 0 || si > input_files[fi].nb_streams - 1) {
|
||||||
fprintf(stderr,"Could not find input stream #%d.%d\n", fi, si);
|
fprintf(stderr,"Could not find input stream #%d.%d\n", fi, si);
|
||||||
ret = AVERROR(EINVAL);
|
ret = AVERROR(EINVAL);
|
||||||
goto fail;
|
goto fail;
|
||||||
@ -2769,7 +2770,7 @@ static int transcode(AVFormatContext **output_files,
|
|||||||
}
|
}
|
||||||
/* the following test is needed in case new streams appear
|
/* the following test is needed in case new streams appear
|
||||||
dynamically in stream : we ignore them */
|
dynamically in stream : we ignore them */
|
||||||
if (pkt.stream_index >= input_files[file_index].ctx->nb_streams)
|
if (pkt.stream_index >= input_files[file_index].nb_streams)
|
||||||
goto discard_packet;
|
goto discard_packet;
|
||||||
ist_index = input_files[file_index].ist_index + pkt.stream_index;
|
ist_index = input_files[file_index].ist_index + pkt.stream_index;
|
||||||
ist = &input_streams[ist_index];
|
ist = &input_streams[ist_index];
|
||||||
@ -3490,6 +3491,7 @@ static int opt_input_file(const char *opt, const char *filename)
|
|||||||
input_files[nb_input_files - 1].ctx = ic;
|
input_files[nb_input_files - 1].ctx = ic;
|
||||||
input_files[nb_input_files - 1].ist_index = nb_input_streams - ic->nb_streams;
|
input_files[nb_input_files - 1].ist_index = nb_input_streams - ic->nb_streams;
|
||||||
input_files[nb_input_files - 1].ts_offset = input_ts_offset - (copy_ts ? 0 : timestamp);
|
input_files[nb_input_files - 1].ts_offset = input_ts_offset - (copy_ts ? 0 : timestamp);
|
||||||
|
input_files[nb_input_files - 1].nb_streams = ic->nb_streams;
|
||||||
|
|
||||||
top_field_first = -1;
|
top_field_first = -1;
|
||||||
frame_rate = (AVRational){0, 0};
|
frame_rate = (AVRational){0, 0};
|
||||||
|
Loading…
Reference in New Issue
Block a user