aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2013-07-15 17:13:54 +0300
committerSean McGovern <gseanmcg@gmail.com>2013-09-23 19:16:04 -0400
commita593d2e92e1491ec04f315d9e38b001b74dcf0b4 (patch)
tree7fca4642d9ce0ab18ea4fd3d91e6607f9840de51
parent729143e2d27d5f06e6c4b959f4808a8a5fa7ca25 (diff)
downloadffmpeg-a593d2e92e1491ec04f315d9e38b001b74dcf0b4.tar.gz
mov: Do not allow updating the time scale after it has been set
The time scale is set in mdhd, and later validated in the enclosing trak atom once all of its children have been parsed. A loose mdhd atom outside of a trak atom could update the time scale of the last stream without any validation. Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Cc: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st> (cherry picked from commit 31931520df35a6f9606fe8293c8a39e2d1fabedf) Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
-rw-r--r--libavformat/mov.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 1dbf63f91f..0e5d473a8b 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -736,6 +736,11 @@ static int mov_read_mdhd(MOVContext *c, AVIOContext *pb, MOVAtom atom)
st = c->fc->streams[c->fc->nb_streams-1];
sc = st->priv_data;
+ if (sc->time_scale) {
+ av_log(c->fc, AV_LOG_ERROR, "Multiple mdhd?\n");
+ return AVERROR_INVALIDDATA;
+ }
+
version = avio_r8(pb);
if (version > 1) {
av_log_ask_for_sample(c, "unsupported version %d\n", version);