X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Ffmvc.c;h=aab46da9cff75a0f7c54f26518ee4905119555e1;hb=a247ac640df3da573cd661065bf53f37863e2b46;hp=5778d7b53f8472fcae76601513b338812ebf72f1;hpb=f8377ffce35251bba043aeda5d81df0d411a0595;p=ffmpeg diff --git a/libavcodec/fmvc.c b/libavcodec/fmvc.c index 5778d7b53f8..aab46da9cff 100644 --- a/libavcodec/fmvc.c +++ b/libavcodec/fmvc.c @@ -402,6 +402,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, AVFrame *frame = data; int ret, y, x; + if (avpkt->size < 8) + return AVERROR_INVALIDDATA; + if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) return ret; @@ -437,6 +440,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, memcpy(dst, src, avctx->width * s->bpp); dst -= frame->linesize[0]; src += s->stride * 4; + if (bytestream2_tell_p(pb) < y*s->stride * 4) + break; } } else { unsigned block, nb_blocks; @@ -621,7 +626,7 @@ static av_cold int decode_close(AVCodecContext *avctx) return 0; } -AVCodec ff_fmvc_decoder = { +const AVCodec ff_fmvc_decoder = { .name = "fmvc", .long_name = NULL_IF_CONFIG_SMALL("FM Screen Capture Codec"), .type = AVMEDIA_TYPE_VIDEO,