OSDN Git Service

movdec: Try to recover from overreading atoms
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 15 Aug 2012 01:21:19 +0000 (03:21 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 15 Aug 2012 01:21:19 +0000 (03:21 +0200)
Fixes Ticket1596

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/mov.c

index dce2c91..cb8307f 100644 (file)
@@ -2666,6 +2666,10 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom)
             left = a.size - avio_tell(pb) + start_pos;
             if (left > 0) /* skip garbage at atom end */
                 avio_skip(pb, left);
+            else if(left < 0) {
+                av_log(c->fc, AV_LOG_DEBUG, "undoing overread of %d in '%.4s'\n", -left, (char*)&a.type);
+                avio_seek(pb, left, SEEK_CUR);
+            }
         }
 
         total_size += a.size;