diff --git a/libavcodec/dpx.c b/libavcodec/dpx.c index bfc88b6d35..4d09efe543 100644 --- a/libavcodec/dpx.c +++ b/libavcodec/dpx.c @@ -104,6 +104,11 @@ static int decode_frame(AVCodecContext *avctx, buf = avpkt->data + 0x304; w = read32(&buf, endian); h = read32(&buf, endian); + if (av_image_check_size(w, h, 0, avctx)) + return AVERROR(EINVAL); + + if (w != avctx->width || h != avctx->height) + avcodec_set_dimensions(avctx, w, h); // Need to end in 0x320 to read the descriptor buf += 20; @@ -182,10 +187,6 @@ static int decode_frame(AVCodecContext *avctx, if (s->picture.data[0]) avctx->release_buffer(avctx, &s->picture); - if (av_image_check_size(w, h, 0, avctx)) - return -1; - if (w != avctx->width || h != avctx->height) - avcodec_set_dimensions(avctx, w, h); if (avctx->get_buffer(avctx, p) < 0) { av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); return -1;