[FFmpeg-cvslog] avformat/utils: Check AVFormatContext->duration in compute_chapters_end() before use

Michael Niedermayer git at videolan.org
Thu Dec 3 00:21:46 CET 2015


ffmpeg | branch: master | Michael Niedermayer <michael at niedermayer.cc> | Wed Dec  2 22:59:56 2015 +0100| [d872643cfe07e39fee42c846d5a3f57d5cad6ab6] | committer: Michael Niedermayer

avformat/utils: Check AVFormatContext->duration in compute_chapters_end() before use

Fixes integer overflow
Fixes: 266ee543812e934f7b4a72923a2701d4/signal_sigabrt_7ffff6ae7cc9_7322_85218d61759d461bdf7387180e8000c9.ogg

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d872643cfe07e39fee42c846d5a3f57d5cad6ab6
---

 libavformat/utils.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/libavformat/utils.c b/libavformat/utils.c
index 8cb7d38..4475df9 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2889,7 +2889,10 @@ enum AVCodecID av_codec_get_id(const AVCodecTag *const *tags, unsigned int tag)
 static void compute_chapters_end(AVFormatContext *s)
 {
     unsigned int i, j;
-    int64_t max_time = s->duration +
+    int64_t max_time = 0;
+
+    if (s->duration > 0)
+        max_time = s->duration +
                        ((s->start_time == AV_NOPTS_VALUE) ? 0 : s->start_time);
 
     for (i = 0; i < s->nb_chapters; i++)



More information about the ffmpeg-cvslog mailing list