[FFmpeg-cvslog] r15924 - trunk/libavcodec/bmp.c

kostya subversion
Mon Nov 24 12:24:03 CET 2008


Author: kostya
Date: Mon Nov 24 12:24:02 2008
New Revision: 15924

Log:
Some BMP files have file size declared in the header equal to headers size
without image data, so try to correct that value before conducting checks on
declared file size.


Modified:
   trunk/libavcodec/bmp.c

Modified: trunk/libavcodec/bmp.c
==============================================================================
--- trunk/libavcodec/bmp.c	(original)
+++ trunk/libavcodec/bmp.c	Mon Nov 24 12:24:02 2008
@@ -73,18 +73,22 @@ static int bmp_decode_frame(AVCodecConte
     buf += 2; /* reserved2 */
 
     hsize = bytestream_get_le32(&buf); /* header size */
-    if(fsize <= hsize){
-        av_log(avctx, AV_LOG_ERROR, "declared file size is less than header size (%d < %d)\n",
-               fsize, hsize);
-        return -1;
-    }
-
     ihsize = bytestream_get_le32(&buf);       /* more header size */
     if(ihsize + 14 > hsize){
         av_log(avctx, AV_LOG_ERROR, "invalid header size %d\n", hsize);
         return -1;
     }
 
+    /* sometimes file size is set to some headers size, set a real size in that case */
+    if(fsize == 14 || fsize == ihsize + 14)
+        fsize = buf_size - 2;
+
+    if(fsize <= hsize){
+        av_log(avctx, AV_LOG_ERROR, "declared file size is less than header size (%d < %d)\n",
+               fsize, hsize);
+        return -1;
+    }
+
     switch(ihsize){
     case  40: // windib v3
     case  64: // OS/2 v2




More information about the ffmpeg-cvslog mailing list