Skip to content
Snippets Groups Projects
Commit 31fe5d98 authored by Carl Eugen Hoyos's avatar Carl Eugen Hoyos
Browse files

Fix possible crash when decoding mpeg streams.

This reverts 2cf8355f,
fixes ticket 329.
parent 64160ef3
No related branches found
No related tags found
No related merge requests found
...@@ -335,6 +335,7 @@ typedef struct InputFile { ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment