diff --git a/libavcodec/iff.c b/libavcodec/iff.c index fe1baf3a0c..b4d7b4b31c 100644 --- a/libavcodec/iff.c +++ b/libavcodec/iff.c @@ -299,14 +299,13 @@ static int extract_header(AVCodecContext *const avctx, avctx->pix_fmt = AV_PIX_FMT_RGB32; av_freep(&s->mask_buf); av_freep(&s->mask_palbuf); + if (s->bpp > 16) { + av_log(avctx, AV_LOG_ERROR, "bpp %d too large for palette\n", s->bpp); + return AVERROR(ENOMEM); + } s->mask_buf = av_malloc((s->planesize * 32) + AV_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) + AV_INPUT_BUFFER_PADDING_SIZE); if (!s->mask_palbuf) { av_freep(&s->mask_buf);