From 0cbff0275b0cff4021e7026ba6060594225fcab5 Mon Sep 17 00:00:00 2001 From: Kristian Amlie Date: Fri, 2 Mar 2007 13:23:06 +0000 Subject: [PATCH] replace the auto array "duration_error" with a malloced array. prevents stack overflow on some plateforms patch by Kristian Amlie %kristian A gridmedia P com % Original thread: Date: Mar 1, 2007 11:29 PM Subject: [Ffmpeg-devel] Stack overflow patch Originally committed as revision 8194 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/utils.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libavformat/utils.c b/libavformat/utils.c index 9e4066801..b71864d1c 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1814,9 +1814,12 @@ int av_find_stream_info(AVFormatContext *ic) AVPacketList *pktl=NULL, **ppktl; int64_t last_dts[MAX_STREAMS]; int duration_count[MAX_STREAMS]={0}; - double duration_error[MAX_STREAMS][MAX_STD_TIMEBASES]={{0}}; //FIXME malloc()? + double (*duration_error)[MAX_STD_TIMEBASES]; offset_t old_offset = url_ftell(&ic->pb); + duration_error = av_mallocz(MAX_STREAMS * sizeof(*duration_error)); + if (!duration_error) return AVERROR_NOMEM; + for(i=0;inb_streams;i++) { st = ic->streams[i]; if(st->codec->codec_type == CODEC_TYPE_VIDEO){ @@ -1927,7 +1930,7 @@ int av_find_stream_info(AVFormatContext *ic) // if(st->codec->codec_type == CODEC_TYPE_VIDEO) // av_log(NULL, AV_LOG_ERROR, "%f\n", dur); if(duration_count[index] < 2) - memset(duration_error, 0, sizeof(duration_error)); + memset(duration_error, 0, MAX_STREAMS * sizeof(*duration_error)); for(i=1; i