I have a Matroska file that contains a broken chapter (end time is before start time) that caused any ffmpeg-linked program to crash when accessing it. I've attached a patch that fixes the crash. Also, here is the backtrace of the crash for reference:
(gdb) backtrace #0 av_dict_set (pm=0x20, key=0x7ffff0bd14ef "title", value=0x7fffd80107e0 "The End", flags=0) at libavutil/dict.c:71 #1 0x00007ffff0b0e220 in matroska_read_header (s=0x20) at libavformat/matroskadec.c:2164 #2 0x00007ffff0b9b233 in avformat_open_input (ps=0x7fffe00c1a08, filename=<optimized out>, fmt=<optimized out>, options=0x0) at libavformat/utils.c:599 #3 0x00007ffff5fc9c32 in ffmpegthumbnailer::MovieDecoder::initialize(std::string const&) () from /usr/lib/libffmpegthumbnailer.so.4 #4 0x00007ffff5fcd50f in ffmpegthumbnailer::VideoThumbnailer::generateThumbnail(std::string const&, ffmpegthumbnailer::ImageWriter&, AVFormatContext*) () from /usr/lib/libffmpegthumbnailer.so.4 #5 0x00007ffff5fcd911 in ffmpegthumbnailer::VideoThumbnailer::generateThumbnail(std::string const&, ThumbnailerImageTypeEnum, std::string const&, AVFormatContext*) () from /usr/lib/libffmpegthumbnailer.so.4 #6 0x00007ffff5fce636 in video_thumbnailer_generate_thumbnail_to_file () from /usr/lib/libffmpegthumbnailer.so.4 #7 0x00000000004314e5 in ?? () #8 0x00000000004319a0 in ?? () #9 0x000000000042221f in ?? () #10 0x00000000004310bb in ?? () #11 0x0000000000430dd0 in ?? () #12 0x00007ffff644ec95 in ?? () from /usr/lib/libglib-2.0.so.0 #13 0x00007ffff5766124 in start_thread () from /usr/lib/libpthread.so.0 #14 0x00007ffff549a4bd in clone () from /usr/lib/libc.so.6 Thanks, Justin
From 14c4bcd96e6677c93b730faf0b4bf296e12bfd79 Mon Sep 17 00:00:00 2001 From: Justin Jacobs <jajdorks...@gmail.com> Date: Wed, 6 Aug 2014 20:04:38 -0400 Subject: [PATCH] NULL-check Matroska chapters when reading header --- libavformat/matroskadec.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 50b75e7..10969de 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2161,8 +2161,10 @@ static int matroska_read_header(AVFormatContext *s) (AVRational) { 1, 1000000000 }, chapters[i].start, chapters[i].end, chapters[i].title); - av_dict_set(&chapters[i].chapter->metadata, - "title", chapters[i].title, 0); + if (chapters[i].chapter) { + av_dict_set(&chapters[i].chapter->metadata, + "title", chapters[i].title, 0); + } max_start = chapters[i].start; } -- 2.0.4
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel