Merge commit '9f25a109922da43c1f81273a431d3b40cb5a785a'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 9 Mar 2015 19:16:07 +0000 (20:16 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 9 Mar 2015 19:31:22 +0000 (20:31 +0100)
* commit '9f25a109922da43c1f81273a431d3b40cb5a785a':
  matroskaenc: Also validate chapter end time

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavformat/matroskaenc.c

@@@ -1074,14 -917,17 +1074,17 @@@ static int mkv_write_chapters(AVFormatC
      for (i = 0; i < s->nb_chapters; i++) {
          ebml_master chapteratom, chapterdisplay;
          AVChapter *c     = s->chapters[i];
 -        int chapterstart = av_rescale_q(c->start, c->time_base, scale);
 -        int chapterend   = av_rescale_q(c->end,   c->time_base, scale);
 +        int64_t chapterstart = av_rescale_q(c->start, c->time_base, scale);
 +        int64_t chapterend   = av_rescale_q(c->end,   c->time_base, scale);
          AVDictionaryEntry *t = NULL;
-         if (chapterstart < 0 || chapterstart > chapterend)
+         if (chapterstart < 0 || chapterstart > chapterend || chapterend < 0) {
 -            av_log(s, AV_LOG_ERROR, "Invalid chapter start (%d) or end (%d).\n",
++            av_log(s, AV_LOG_ERROR, "Invalid chapter start (%"PRId64") or end (%"PRId64").\n",
+                    chapterstart, chapterend);
              return AVERROR_INVALIDDATA;
+         }
  
          chapteratom = start_ebml_master(pb, MATROSKA_ID_CHAPTERATOM, 0);
 -        put_ebml_uint(pb, MATROSKA_ID_CHAPTERUID, c->id);
 +        put_ebml_uint(pb, MATROSKA_ID_CHAPTERUID, c->id + mkv->chapter_id_offset);
          put_ebml_uint(pb, MATROSKA_ID_CHAPTERTIMESTART, chapterstart);
          put_ebml_uint(pb, MATROSKA_ID_CHAPTERTIMEEND, chapterend);
          put_ebml_uint(pb, MATROSKA_ID_CHAPTERFLAGHIDDEN , 0);