X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fvp9recon.c;h=e38cf99ec5701eed1014bf2498a7382fee277dfe;hb=bc70684e74a185d7b80c8b80bdedda659cb581b8;hp=49bb04e1f40fff3d902907043bb137cdd81aee60;hpb=b8eb0827f053230dd919bc73e25381b47b4fe1a7;p=ffmpeg diff --git a/libavcodec/vp9recon.c b/libavcodec/vp9recon.c index 49bb04e1f40..e38cf99ec57 100644 --- a/libavcodec/vp9recon.c +++ b/libavcodec/vp9recon.c @@ -22,6 +22,7 @@ */ #include "libavutil/avassert.h" +#include "libavutil/mem_internal.h" #include "avcodec.h" #include "internal.h" @@ -572,6 +573,16 @@ static av_always_inline void inter_recon(VP9TileData *td, int bytesperpixel) VP9Block *b = td->b; int row = td->row, col = td->col; + if (s->mvscale[b->ref[0]][0] == REF_INVALID_SCALE || + (b->comp && s->mvscale[b->ref[1]][0] == REF_INVALID_SCALE)) { + if (!s->td->error_info) { + s->td->error_info = AVERROR_INVALIDDATA; + av_log(NULL, AV_LOG_ERROR, "Bitstream not supported, " + "reference frame has invalid dimensions\n"); + } + return; + } + if (s->mvscale[b->ref[0]][0] || (b->comp && s->mvscale[b->ref[1]][0])) { if (bytesperpixel == 1) { inter_pred_scaled_8bpp(td);