iff: Do not read over the source buffer
authorLuca Barbato <lu_zero@gentoo.org>
Sat, 29 Jun 2013 05:26:48 +0000 (07:26 +0200)
committerLuca Barbato <lu_zero@gentoo.org>
Sat, 24 Aug 2013 09:38:48 +0000 (11:38 +0200)
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
(cherry picked from commit 7d65e960c72f36b73ae7fe84f8e427d758e61da9)

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
libavcodec/iff.c

index 99da7b5..b7a7bb3 100644 (file)
@@ -272,7 +272,7 @@ static int decode_frame_ilbm(AVCodecContext *avctx,
 
     if (avctx->codec_tag == MKTAG('I','L','B','M')) { // interleaved
         if (avctx->pix_fmt == AV_PIX_FMT_PAL8 || avctx->pix_fmt == AV_PIX_FMT_GRAY8) {
-            for(y = 0; y < avctx->height; y++ ) {
+            for (y = 0; y < avctx->height && buf < buf_end; y++ ) {
                 uint8_t *row = &s->frame.data[0][ y*s->frame.linesize[0] ];
                 memset(row, 0, avctx->width);
                 for (plane = 0; plane < avctx->bits_per_coded_sample && buf < buf_end; plane++) {