swresample/resample: Limit filter length
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 7 Apr 2014 22:19:07 +0000 (00:19 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 23 Jun 2014 13:10:07 +0000 (15:10 +0200)
Related to CID1197063

The limit choosen is arbitrary and much larger than what makes sense.
It avoids the need for checking arithmetic operations with the length for overflow

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit f9158b01d0f3effb58e87fb07db0382bc1e47de5)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libswresample/resample.c

index 8b1b6ca..b968447 100644 (file)
@@ -229,6 +229,11 @@ static ResampleContext *resample_init(ResampleContext *c, int out_rate, int in_r
             av_assert0(0);
         }
 
+        if (filter_size/factor > INT32_MAX/256) {
+            av_log(NULL, AV_LOG_ERROR, "Filter length too large\n");
+            goto error;
+        }
+
         c->phase_shift   = phase_shift;
         c->phase_mask    = phase_count - 1;
         c->linear        = linear;