[FFmpeg-cvslog] lavf/mov: Allow reading very large files.
Pablo Montilla
git at videolan.org
Fri Sep 29 00:48:27 EEST 2017
ffmpeg | branch: master | Pablo Montilla <melkor at odyssey.com.uy> | Thu Sep 28 23:46:57 2017 +0200| [1015982f45d832ee926a81460121673a97292333] | committer: Carl Eugen Hoyos
lavf/mov: Allow reading very large files.
The Sample count in the time-to-sample table is defined as
32-bit unsigned integer by the QT specification.
Fixes ticket #6700.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1015982f45d832ee926a81460121673a97292333
---
libavformat/isom.h | 2 +-
libavformat/mov.c | 6 +-----
2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/libavformat/isom.h b/libavformat/isom.h
index 9aea629293..b9380e9dcc 100644
--- a/libavformat/isom.h
+++ b/libavformat/isom.h
@@ -52,7 +52,7 @@ struct AVAESCTR;
*/
typedef struct MOVStts {
- int count;
+ unsigned int count;
int duration;
} MOVStts;
diff --git a/libavformat/mov.c b/libavformat/mov.c
index ede9cda9d3..899690d920 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -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;
More information about the ffmpeg-cvslog
mailing list