diff --git a/libavcodec/g729dec.c b/libavcodec/g729dec.c index 2e1bf18e4e..32218e5989 100644 --- a/libavcodec/g729dec.c +++ b/libavcodec/g729dec.c @@ -328,11 +328,14 @@ static int16_t g729d_voice_decision(int onset, int prev_voice_decision, const in static int32_t scalarproduct_int16_c(const int16_t * v1, const int16_t * v2, int order) { - int res = 0; + int64_t res = 0; while (order--) res += *v1++ * *v2++; + if (res > INT32_MAX) return INT32_MAX; + else if (res < INT32_MIN) return INT32_MIN; + return res; }