diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c index 1bdc4cbc1aed38143b1fdf0afe6aea18e8dfd996..ee5ce5d07533dc3df222b8f14e4ceff7c521efc2 100644 --- a/libavutil/hwcontext_vaapi.c +++ b/libavutil/hwcontext_vaapi.c @@ -770,6 +770,9 @@ static int vaapi_transfer_data_from(AVHWFramesContext *hwfc, AVFrame *map; int err; + if (dst->width > hwfc->width || dst->height > hwfc->height) + return AVERROR(EINVAL); + map = av_frame_alloc(); if (!map) return AVERROR(ENOMEM); @@ -779,6 +782,9 @@ static int vaapi_transfer_data_from(AVHWFramesContext *hwfc, if (err) goto fail; + map->width = dst->width; + map->height = dst->height; + err = av_frame_copy(dst, map); if (err) goto fail; @@ -795,6 +801,9 @@ static int vaapi_transfer_data_to(AVHWFramesContext *hwfc, AVFrame *map; int err; + if (src->width > hwfc->width || src->height > hwfc->height) + return AVERROR(EINVAL); + map = av_frame_alloc(); if (!map) return AVERROR(ENOMEM); @@ -804,6 +813,9 @@ static int vaapi_transfer_data_to(AVHWFramesContext *hwfc, if (err) goto fail; + map->width = src->width; + map->height = src->height; + err = av_frame_copy(map, src); if (err) goto fail;