diff mbox

[FFmpeg-devel,2/2] avformat/movenc: Check frame rate in mov_write_uuidprof_tag()

Message ID 20161009013637.11328-2-michael@niedermayer.cc
State Accepted
Commit ed2112fb36d7407d960b4f44475a700a7c44344c
Headers show

Commit Message

Michael Niedermayer Oct. 9, 2016, 1:36 a.m. UTC
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavformat/movenc.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

Comments

Michael Niedermayer Oct. 9, 2016, 10:29 p.m. UTC | #1
On Sun, Oct 09, 2016 at 03:36:37AM +0200, Michael Niedermayer wrote:
> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> ---
>  libavformat/movenc.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)

applied

[...]
diff mbox

Patch

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 2c155eb..d7c7158 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;
 }