lavf/mov: Allow reading very large files.
authorPablo Montilla <melkor@odyssey.com.uy>
Thu, 28 Sep 2017 21:46:57 +0000 (23:46 +0200)
committerCarl Eugen Hoyos <ceffmpeg@gmail.com>
Thu, 28 Sep 2017 21:46:57 +0000 (23:46 +0200)
The Sample count in the time-to-sample table is defined as
32-bit unsigned integer by the QT specification.

Fixes ticket #6700.

libavformat/isom.h
libavformat/mov.c

index 9aea629..b9380e9 100644 (file)
@@ -52,7 +52,7 @@ struct AVAESCTR;
  */
 
 typedef struct MOVStts {
-    int count;
+    unsigned int count;
     int duration;
 } MOVStts;
 
index ede9cda..899690d 100644 (file)
@@ -2663,15 +2663,11 @@ static int mov_read_stts(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 
     for (i = 0; i < entries && !pb->eof_reached; i++) {
         int sample_duration;
-        int sample_count;
+        unsigned int sample_count;
 
         sample_count=avio_rb32(pb);
         sample_duration = avio_rb32(pb);
 
-        if (sample_count < 0) {
-            av_log(c->fc, AV_LOG_ERROR, "Invalid sample_count=%d\n", sample_count);
-            return AVERROR_INVALIDDATA;
-        }
         sc->stts_data[i].count= sample_count;
         sc->stts_data[i].duration= sample_duration;