mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/opus_silk: Change silk_lsf2lpc() slightly toward silk/NLSF2A.c
Fixes: runtime error: signed integer overflow: -1440457022 - 785819492 cannot be represented in type 'int'
Fixes: 7700/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_OPUS_fuzzer-6595838684954624
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit e7dda51150
)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
6577ae7119
commit
412872e6cb
|
@ -232,8 +232,10 @@ static void silk_lsf2lpc(const int16_t nlsf[16], float lpcf[16], int order)
|
|||
|
||||
/* reconstruct A(z) */
|
||||
for (k = 0; k < order>>1; k++) {
|
||||
lpc32[k] = -p[k + 1] - p[k] - q[k + 1] + q[k];
|
||||
lpc32[order-k-1] = -p[k + 1] - p[k] + q[k + 1] - q[k];
|
||||
int32_t p_tmp = p[k + 1] + p[k];
|
||||
int32_t q_tmp = q[k + 1] - q[k];
|
||||
lpc32[k] = -q_tmp - p_tmp;
|
||||
lpc32[order-k-1] = q_tmp - p_tmp;
|
||||
}
|
||||
|
||||
/* limit the range of the LPC coefficients to each fit within an int16_t */
|
||||
|
|
Loading…
Reference in New Issue