diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2016-10-09 03:05:27 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2016-10-10 00:58:16 +0200 |
commit | ed2112fb36d7407d960b4f44475a700a7c44344c (patch) | |
tree | 8399238beeb999c6d22734135b53104934805b79 | |
parent | 21bffa93a6fc73e1f1859f8bc224409eaaf27658 (diff) | |
download | ffmpeg-ed2112fb36d7407d960b4f44475a700a7c44344c.tar.gz |
avformat/movenc: Check frame rate in mov_write_uuidprof_tag()
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavformat/movenc.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 2c155eb8b6..d7c7158483 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -4261,7 +4261,7 @@ static int mov_write_ftyp_tag(AVIOContext *pb, AVFormatContext *s) return update_size(pb, pos); } -static void mov_write_uuidprof_tag(AVIOContext *pb, AVFormatContext *s) +static int mov_write_uuidprof_tag(AVIOContext *pb, AVFormatContext *s) { AVStream *video_st = s->streams[0]; AVCodecParameters *video_par = s->streams[0]->codecpar; @@ -4271,6 +4271,11 @@ static void mov_write_uuidprof_tag(AVIOContext *pb, AVFormatContext *s) int audio_kbitrate = audio_par->bit_rate / 1000; int video_kbitrate = FFMIN(video_par->bit_rate / 1000, 800 - audio_kbitrate); + if (frame_rate < 0 || frame_rate > INT32_MAX) { + av_log(s, AV_LOG_ERROR, "Frame rate %f outside supported range\n", frame_rate / (double)0x10000); + return AVERROR(EINVAL); + } + avio_wb32(pb, 0x94); /* size */ ffio_wfourcc(pb, "uuid"); ffio_wfourcc(pb, "PROF"); @@ -4321,6 +4326,8 @@ static void mov_write_uuidprof_tag(AVIOContext *pb, AVFormatContext *s) avio_wb16(pb, video_par->width); avio_wb16(pb, video_par->height); avio_wb32(pb, 0x010001); /* ? */ + + return 0; } static int mov_write_identification(AVIOContext *pb, AVFormatContext *s) @@ -4345,7 +4352,7 @@ static int mov_write_identification(AVIOContext *pb, AVFormatContext *s) av_log(s, AV_LOG_ERROR, "PSP mode need one video and one audio stream\n"); return AVERROR(EINVAL); } - mov_write_uuidprof_tag(pb, s); + return mov_write_uuidprof_tag(pb, s); } return 0; } |