From 6a8c0d83572deabc4cd1920b6d71cc65a37acc57 Mon Sep 17 00:00:00 2001 From: Muhammad Faiz Date: Tue, 13 Dec 2016 14:11:48 +0700 Subject: [PATCH] swresample/resample: do not allow negative dst_size return value This should fix Ticket6012 Reviewed-by: Michael Niedermayer Signed-off-by: Muhammad Faiz --- libswresample/resample.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libswresample/resample.c b/libswresample/resample.c index 71dffb9a3e..ce6a82f132 100644 --- a/libswresample/resample.c +++ b/libswresample/resample.c @@ -478,8 +478,9 @@ static int swri_resample(ResampleContext *c, int64_t incr= (1LL<<32) * c->dst_incr / c->src_incr; int new_size = (src_size * (int64_t)c->src_incr - frac + c->dst_incr - 1) / c->dst_incr; - dst_size= FFMIN(dst_size, new_size); - c->dsp.resample_one(dst, src, dst_size, index2, incr); + dst_size = FFMAX(FFMIN(dst_size, new_size), 0); + if (dst_size > 0) + c->dsp.resample_one(dst, src, dst_size, index2, incr); index += dst_size * c->dst_incr_div; index += (frac + dst_size * (int64_t)c->dst_incr_mod) / c->src_incr; @@ -494,7 +495,7 @@ static int swri_resample(ResampleContext *c, int64_t delta_frac = (end_index - c->index) * c->src_incr - c->frac; int delta_n = (delta_frac + c->dst_incr - 1) / c->dst_incr; - dst_size = FFMIN(dst_size, delta_n); + dst_size = FFMAX(FFMIN(dst_size, delta_n), 0); if (dst_size > 0) { /* resample_linear and resample_common should have same behavior * when frac and dst_incr_mod are zero */ -- 2.11.0