diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c index 605e465e2d..6176bdc880 100644 --- a/libavutil/hwcontext_vaapi.c +++ b/libavutil/hwcontext_vaapi.c @@ -817,6 +817,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); @@ -826,6 +829,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; @@ -842,6 +848,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); @@ -851,6 +860,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;