mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/ilbcdec: Fix undefined integer overflow lsf2poly()
The addition is moved up into the context where the variable is unsigned avoiding the undefined behavior Fixes: runtime error: signed integer overflow: 2147481972 + 4096 cannot be represented in type 'int' Fixes: 12444/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_ILBC_fuzzer-5755706244857856 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
c95d0fb239
commit
4523cc5e75
|
@ -408,11 +408,11 @@ static void lsf2poly(int16_t *a, int16_t *lsf)
|
|||
|
||||
a[0] = 4096;
|
||||
for (i = 5; i > 0; i--) {
|
||||
tmp = f[0][6 - i] + (unsigned)f[1][6 - i];
|
||||
a[6 - i] = (tmp + 4096) >> 13;
|
||||
tmp = f[0][6 - i] + (unsigned)f[1][6 - i] + 4096;
|
||||
a[6 - i] = tmp >> 13;
|
||||
|
||||
tmp = f[0][6 - i] - (unsigned)f[1][6 - i];
|
||||
a[5 + i] = (tmp + 4096) >> 13;
|
||||
tmp = f[0][6 - i] - (unsigned)f[1][6 - i] + 4096;
|
||||
a[5 + i] = tmp >> 13;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue