Commit 075b3377 authored by Michael Niedermayer's avatar Michael Niedermayer

avcodec/cbs_av1_syntax_template: Check num_y_points

"It is a requirement of bitstream conformance that num_y_points is less than or equal to 14."

Fixes: index 24 out of bounds for type 'uint8_t [24]'
Fixes: 19282/clusterfuzz-testcase-minimized-ffmpeg_BSF_AV1_FRAME_MERGE_fuzzer-5747424845103104

Note, also needs a23dd336

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: jamrial
Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit bbe27890)
Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
parent 747245ce
...@@ -256,8 +256,8 @@ typedef struct AV1RawFrameHeader { ...@@ -256,8 +256,8 @@ typedef struct AV1RawFrameHeader {
uint8_t update_grain; uint8_t update_grain;
uint8_t film_grain_params_ref_idx; uint8_t film_grain_params_ref_idx;
uint8_t num_y_points; uint8_t num_y_points;
uint8_t point_y_value[16]; uint8_t point_y_value[14];
uint8_t point_y_scaling[16]; uint8_t point_y_scaling[14];
uint8_t chroma_scaling_from_luma; uint8_t chroma_scaling_from_luma;
uint8_t num_cb_points; uint8_t num_cb_points;
uint8_t point_cb_value[16]; uint8_t point_cb_value[16];
......
...@@ -1045,7 +1045,7 @@ static int FUNC(film_grain_params)(CodedBitstreamContext *ctx, RWContext *rw, ...@@ -1045,7 +1045,7 @@ static int FUNC(film_grain_params)(CodedBitstreamContext *ctx, RWContext *rw,
return 0; return 0;
} }
fb(4, num_y_points); fc(4, num_y_points, 0, 14);
for (i = 0; i < current->num_y_points; i++) { for (i = 0; i < current->num_y_points; i++) {
fbs(8, point_y_value[i], 1, i); fbs(8, point_y_value[i], 1, i);
fbs(8, point_y_scaling[i], 1, i); fbs(8, point_y_scaling[i], 1, i);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment