From 2c23f87c8553d5cfc1c130bc3e487660a3c826ec Mon Sep 17 00:00:00 2001 From: Michael Niedermayer <michaelni@gmx.at> Date: Mon, 2 Jun 2014 00:57:08 +0200 Subject: [PATCH] swr/resample_template: prevent end_index from overflowing and add check for delta_frac overflow Signed-off-by: Michael Niedermayer <michaelni@gmx.at> --- libswresample/resample_template.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libswresample/resample_template.c b/libswresample/resample_template.c index 3fc83158bcb..bb36e65c177 100644 --- a/libswresample/resample_template.c +++ b/libswresample/resample_template.c @@ -134,8 +134,10 @@ int RENAME(swri_resample)(ResampleContext *c, DELEM *dst, const DELEM *src, int av_assert2(index >= 0); *consumed= index; index = 0; - } else if (compensation_distance == 0 && index >= 0) { - int64_t end_index = (1 + src_size - c->filter_length) << c->phase_shift; + } else if (compensation_distance == 0 && + index >= 0 && + src_size*(int64_t)c->src_incr < (INT64_MAX >> (c->phase_shift+1))) { + int64_t end_index = (1LL + src_size - c->filter_length) << c->phase_shift; int64_t delta_frac = (end_index - index) * c->src_incr - c->frac; int delta_n = (delta_frac + c->dst_incr - 1) / c->dst_incr; int n = FFMIN(dst_size, delta_n); -- GitLab