bmpdec: only initialize palette for pal8.
authorAnton Khirnov <anton@khirnov.net>
Sun, 16 Sep 2012 06:33:09 +0000 (08:33 +0200)
committerAnton Khirnov <anton@khirnov.net>
Sun, 16 Sep 2012 07:43:17 +0000 (09:43 +0200)
Gray8 is not considered to be paletted, so this would cause an invalid
write.

Fixes bug 367.

CC: libav-stable@libav.org
libavcodec/bmp.c

index 299f37c..3af25cd 100644 (file)
@@ -228,9 +228,6 @@ static int bmp_decode_frame(AVCodecContext *avctx,
     if(comp == BMP_RLE4 || comp == BMP_RLE8)
         memset(p->data[0], 0, avctx->height * p->linesize[0]);
 
-    if(depth == 4 || depth == 8)
-        memset(p->data[1], 0, 1024);
-
     if(height > 0){
         ptr = p->data[0] + (avctx->height - 1) * p->linesize[0];
         linesize = -p->linesize[0];
@@ -241,6 +238,9 @@ static int bmp_decode_frame(AVCodecContext *avctx,
 
     if(avctx->pix_fmt == PIX_FMT_PAL8){
         int colors = 1 << depth;
+
+        memset(p->data[1], 0, 1024);
+
         if(ihsize >= 36){
             int t;
             buf = buf0 + 46;