OSDN Git Service

wtvenc: test avio_size() validity
authorPeter Ross <pross@xvid.org>
Mon, 23 Dec 2013 10:04:45 +0000 (21:04 +1100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 23 Dec 2013 12:33:45 +0000 (13:33 +0100)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/wtvdec.c

index 48f51ad..ce76754 100644 (file)
@@ -153,6 +153,7 @@ static AVIOContext * wtvfile_open_sector(int first_sector, uint64_t length, int
     AVIOContext *pb;
     WtvFile *wf;
     uint8_t *buffer;
+    int64_t size;
 
     if (seek_by_sector(s->pb, first_sector, 0) < 0)
         return NULL;
@@ -205,7 +206,8 @@ static AVIOContext * wtvfile_open_sector(int first_sector, uint64_t length, int
         return NULL;
     }
 
-    if ((int64_t)wf->sectors[wf->nb_sectors - 1] << WTV_SECTOR_BITS > avio_size(s->pb))
+    size = avio_size(s->pb);
+    if (size >= 0 && (int64_t)wf->sectors[wf->nb_sectors - 1] << WTV_SECTOR_BITS > size)
         av_log(s, AV_LOG_WARNING, "truncated file\n");
 
     /* check length */