mirror of https://git.ffmpeg.org/ffmpeg.git
mpeg4videodec: silence ubsan warning
s->ac_val[0][0] is of type 'int16_t [16]', but points into a larger buffer. Here it is used as base pointer to find the correct position in the larger buffer by adding 's->block_index[n] * 16' and thus as 'int16_t *'. This fixes clang's ubsan runtime error: index out of bounds for type 'int16_t [16]' Fixes: test_case.mp4 Found-by: Tyson Smith <twsmith@mozilla.com> Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
This commit is contained in:
parent
5989add4ab
commit
564dd3f0f4
|
@ -67,7 +67,7 @@ void ff_mpeg4_pred_ac(MpegEncContext *s, int16_t *block, int n, int dir)
|
|||
int8_t *const qscale_table = s->current_picture.qscale_table;
|
||||
|
||||
/* find prediction */
|
||||
ac_val = s->ac_val[0][0] + s->block_index[n] * 16;
|
||||
ac_val = &s->ac_val[0][0][0] + s->block_index[n] * 16;
|
||||
ac_val1 = ac_val;
|
||||
if (s->ac_pred) {
|
||||
if (dir == 0) {
|
||||
|
|
Loading…
Reference in New Issue