diff --git a/libavcodec/iff.c b/libavcodec/iff.c index fe95357d21..a3241f6ea2 100644 --- a/libavcodec/iff.c +++ b/libavcodec/iff.c @@ -238,6 +238,11 @@ static int extract_header(AVCodecContext *const avctx, s->mask_buf = av_malloc((s->planesize * 32) + FF_INPUT_BUFFER_PADDING_SIZE); if (!s->mask_buf) return AVERROR(ENOMEM); + if (s->bpp > 16) { + av_log(avctx, AV_LOG_ERROR, "bpp %d too large for palette\n", s->bpp); + av_freep(&s->mask_buf); + return AVERROR(ENOMEM); + } s->mask_palbuf = av_malloc((2 << s->bpp) * sizeof(uint32_t) + FF_INPUT_BUFFER_PADDING_SIZE); if (!s->mask_palbuf) { av_freep(&s->mask_buf);