aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarl Eugen Hoyos <cehoyos@ag.or.at>2011-08-04 11:06:43 +0200
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2011-08-04 11:43:34 +0200
commit8893f7d815db4efed797101d7a94718554990706 (patch)
tree21df06a23b261684f01e9c6de4005da73ba01bff
parent7c772ccd276021fed1f6ea40d150d73337fc3c1b (diff)
downloadffmpeg-8893f7d815db4efed797101d7a94718554990706.tar.gz
Fix possible crash when decoding mpeg streams.
This reverts 2cf8355f98681bdd726b739008acd5483f82f8d7, fixes ticket 329.
-rw-r--r--ffmpeg.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 857e02292e..ab628b2cbc 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -345,6 +345,7 @@ typedef struct AVInputFile {
int eof_reached; /* true if eof reached */
int ist_index; /* index of first stream in ist_table */
int buffer_size; /* current total buffer size */
+ int nb_streams;
} AVInputFile;
#if HAVE_TERMIOS_H
@@ -2046,7 +2047,7 @@ static int transcode(AVFormatContext **output_files,
int si = stream_maps[i].stream_index;
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);
ret = AVERROR(EINVAL);
goto fail;
@@ -2732,7 +2733,7 @@ static int transcode(AVFormatContext **output_files,
}
/* the following test is needed in case new streams appear
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;
ist_index = input_files[file_index].ist_index + pkt.stream_index;
ist = &input_streams[ist_index];
@@ -3469,6 +3470,7 @@ static int opt_input_file(const char *opt, const char *filename)
input_files = grow_array(input_files, sizeof(*input_files), &nb_input_files, nb_input_files + 1);
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].nb_streams = ic->nb_streams;
top_field_first = -1;
video_channel = 0;