fix issue 225, instead of stoping when wrong atom size is found,
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>
Mon, 22 Oct 2007 14:36:14 +0000 (14:36 +0000)
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>
Mon, 22 Oct 2007 14:36:14 +0000 (14:36 +0000)
limit atom size to what is left, assuming container atom has correct size..
cricket4.3g2 has incorrect moov atom size which indicates that file size should be
2 bytes bigger than it is and quicktime reads it correctly though.

Originally committed as revision 10836 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/mov.c

index e9b6c76..0ce6320 100644 (file)
@@ -179,8 +179,10 @@ static int mov_read_default(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
                 break;
         }
         a.size -= 8;
-        if(a.size < 0 || a.size > atom.size - total_size)
+        if(a.size < 0)
             break;
+        if (a.size > atom.size - total_size)
+            a.size = atom.size - total_size;
 
         for (i = 0; c->parse_table[i].type != 0L
              && c->parse_table[i].type != a.type; i++)