From 0a5ed91e5e6141cbf21e26a772a0f96a83bd7aed Mon Sep 17 00:00:00 2001 From: Niklas Haas Date: Sun, 9 Jun 2024 16:57:31 +0200 Subject: [PATCH] avcodec/dovi_rpudec: reject reserved_zero_3bits != 0 This is used by future versions of the spec to implement metadata compression. Given that we don't yet implement that spec, validate that this is equal to 0 for now. --- libavcodec/dovi_rpudec.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavcodec/dovi_rpudec.c b/libavcodec/dovi_rpudec.c index b57997dbf7..0f76dbb706 100644 --- a/libavcodec/dovi_rpudec.c +++ b/libavcodec/dovi_rpudec.c @@ -424,6 +424,7 @@ int ff_dovi_rpu_parse(DOVIContext *s, const uint8_t *rpu, size_t rpu_size, int bl_bit_depth_minus8 = get_ue_golomb_31(gb); int el_bit_depth_minus8 = get_ue_golomb_31(gb); int vdr_bit_depth_minus8 = get_ue_golomb_31(gb); + int reserved_zero_3bits; VALIDATE(bl_bit_depth_minus8, 0, 8); VALIDATE(el_bit_depth_minus8, 0, 8); VALIDATE(vdr_bit_depth_minus8, 0, 8); @@ -431,7 +432,8 @@ int ff_dovi_rpu_parse(DOVIContext *s, const uint8_t *rpu, size_t rpu_size, hdr->el_bit_depth = el_bit_depth_minus8 + 8; hdr->vdr_bit_depth = vdr_bit_depth_minus8 + 8; hdr->spatial_resampling_filter_flag = get_bits1(gb); - skip_bits(gb, 3); /* reserved_zero_3bits */ + reserved_zero_3bits = get_bits(gb, 3); + VALIDATE(reserved_zero_3bits, 0, 0); hdr->el_spatial_resampling_filter_flag = get_bits1(gb); hdr->disable_residual_flag = get_bits1(gb); }