[FFmpeg-cvslog] swr/resample_template: prevent end_index from overflowing and add check for delta_frac overflow

Michael Niedermayer git at videolan.org
Mon Jun 2 01:09:00 CEST 2014


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Mon Jun  2 00:57:08 2014 +0200| [2c23f87c8553d5cfc1c130bc3e487660a3c826ec] | committer: Michael Niedermayer

swr/resample_template: prevent end_index from overflowing and add check for delta_frac overflow

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2c23f87c8553d5cfc1c130bc3e487660a3c826ec
---

 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 3fc8315..bb36e65 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);



More information about the ffmpeg-cvslog mailing list