[FFmpeg-devel] [PATCH 5/9] avcodec/cbs_h266_syntax_template: Check bit depth with range extension

James Almer jamrial at gmail.com
Fri Sep 20 02:53:07 EEST 2024


On 9/19/2024 7:56 PM, Michael Niedermayer wrote:
> Fixes: shift exponent 62 is too large for 32-bit type 'int'
> Fixes: 71020/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VVC_fuzzer-6444916325023744
> 
> Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ---
>   libavcodec/cbs_h266_syntax_template.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/libavcodec/cbs_h266_syntax_template.c b/libavcodec/cbs_h266_syntax_template.c
> index a8f5af04d02..1c111126563 100644
> --- a/libavcodec/cbs_h266_syntax_template.c
> +++ b/libavcodec/cbs_h266_syntax_template.c
> @@ -1041,6 +1041,9 @@ static int FUNC(sps_range_extension)(CodedBitstreamContext *ctx, RWContext *rw,
>   {
>       int err;
>   
> +    if (current->sps_bitdepth_minus8 < 10)

sps_bitdepth_minus8 can only be between 0 and 8, so this is basically 
making it abort on any and every sample with SPS range extension.

Also, it doesn't seem to be used here at all, so i don't see how this is 
fixing anything. Can you share the sample?

> +        return AVERROR_INVALIDDATA;
> +
>       flag(sps_extended_precision_flag);
>       if (current->sps_transform_skip_enabled_flag)
>           flag(sps_ts_residual_coding_rice_present_in_sh_flag);

-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 495 bytes
Desc: OpenPGP digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20240919/08b4ecc7/attachment.sig>


More information about the ffmpeg-devel mailing list