[FFmpeg-devel] [PATCH 3/3] lavc/vvcdec: ensure slices contain nonzero CTUs
Frank Plowman
post at frankplowman.com
Wed Jan 29 10:40:30 EET 2025
On 26/01/2025 03:10, Nuo Mi wrote:
> fixes https://github.com/ffvvc/tests/tree/main/fuzz/passed/000323.bit
>
> Co-authored-by: Frank Plowman <post at frankplowman.com>
> ---
> libavcodec/vvc/ps.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/libavcodec/vvc/ps.c b/libavcodec/vvc/ps.c
> index c9f7c5c80f..01b4615eda 100644
> --- a/libavcodec/vvc/ps.c
> +++ b/libavcodec/vvc/ps.c
> @@ -1232,7 +1232,7 @@ static int sh_alf_aps(const VVCSH *sh, const VVCFrameParamSets *fps)
> return 0;
> }
>
> -static void sh_slice_address(VVCSH *sh, const H266RawSPS *sps, const VVCPPS *pps)
> +static int sh_slice_address(VVCSH *sh, const H266RawSPS *sps, const VVCPPS *pps)
> {
> const int slice_address = sh->r->sh_slice_address;
>
> @@ -1256,6 +1256,11 @@ static void sh_slice_address(VVCSH *sh, const H266RawSPS *sps, const VVCPPS *pps
> sh->num_ctus_in_curr_slice += pps->r->row_height_val[tile_y] * pps->r->col_width_val[tile_x];
> }
> }
> +
> + if (!sh->num_ctus_in_curr_slice)
> + return AVERROR_INVALIDDATA;
> +
> + return 0;
> }
>
> static void sh_qp_y(VVCSH *sh, const H266RawPPS *pps, const H266RawPictureHeader *ph)
> @@ -1352,7 +1357,9 @@ static int sh_derive(VVCSH *sh, const VVCFrameParamSets *fps)
> const H266RawPictureHeader *ph = fps->ph.r;
> int ret;
>
> - sh_slice_address(sh, sps, fps->pps);
> + ret = sh_slice_address(sh, sps, fps->pps);
> + if (ret < 0)
> + return ret;
> ret = sh_alf_aps(sh, fps);
> if (ret < 0)
> return ret;
LGTM!
Thanks,
Frank
More information about the ffmpeg-devel
mailing list