]> git.sesse.net Git - ffmpeg/commitdiff
avformat/mov: Fix extended atom size buffer length check
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>
Thu, 18 Mar 2021 15:26:54 +0000 (15:26 +0000)
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>
Sun, 21 Mar 2021 14:14:36 +0000 (14:14 +0000)
When extended atom size support was added to probing in
fec4a2d232d7ebf6d1084fb568d4d84844f25abc, the buffer
size check was backwards, but probing continued to work
because there was no minimum size check yet, so despite
size being 1 on these atoms, and failing to read the 64-bit
size, the tag was still correctly read.

When 0b78016b2d7c36b32d07669c0c86bc4b4225ec98 introduced a
minimum size check, this exposed the bug, and broke probing
any files with extended atom sizes, such as entirely valid
large files that start whith mdat atoms.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
libavformat/mov.c

index f9c4dbe5d450ea2bcbbd2e23a8e18481038bd6b9..aef5517c2c0f287b9f4388bd666b8e361fc21ec4 100644 (file)
@@ -7121,7 +7121,7 @@ static int mov_probe(const AVProbeData *p)
         if ((offset + 8) > (unsigned int)p->buf_size)
             break;
         size = AV_RB32(p->buf + offset);
-        if (size == 1 && offset + 16 > (unsigned int)p->buf_size) {
+        if (size == 1 && offset + 16 <= (unsigned int)p->buf_size) {
             size = AV_RB64(p->buf+offset + 8);
             minsize = 16;
         } else if (size == 0) {