From c5a405c4f07066efa786b75865c2c9c8f2a399ed Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 29 Jun 2014 13:55:29 +0200 Subject: [PATCH] swresample/resample_template: flip order of operations in swri_resample_linear() for 32bit Fixes integer overflow Found-by: BBB Reviewed-by: "Ronald S. Bultje" Signed-off-by: Michael Niedermayer --- libswresample/resample_template.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libswresample/resample_template.c b/libswresample/resample_template.c index db208e3414..5983d46b79 100644 --- a/libswresample/resample_template.c +++ b/libswresample/resample_template.c @@ -62,7 +62,6 @@ # define DELEM int32_t # define FELEM int32_t # define FELEM2 int64_t -# define FELEML int64_t # define FELEM_MAX INT32_MAX # define FELEM_MIN INT32_MIN # define OUT(d, v) v = (v + (1<<(FILTER_SHIFT-1)))>>FILTER_SHIFT;\ @@ -174,7 +173,11 @@ int RENAME(swri_resample_linear)(ResampleContext *c, v2 += src[sample_index + i] * (FELEM2)filter[i + c->filter_alloc]; } #endif +#ifdef FELEML val += (v2 - val) * (FELEML) frac / c->src_incr; +#else + val += (v2 - val) / c->src_incr * frac; +#endif OUT(dst[dst_index], val); frac += c->dst_incr_mod;