summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <[email protected]>2014-04-08 00:19:07 +0200
committerMichael Niedermayer <[email protected]>2014-06-25 16:18:40 +0200
commit1c321b7c31aa6e2cd763176961f818ff91e48168 (patch)
tree672d4ca0f0ec8d6d317367abb718075a273ed80c
parent491e1ec95db40130b29ba5749d6f6312c9c2f8fb (diff)
swresample/resample: Limit filter length
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 <[email protected]> (cherry picked from commit f9158b01d0f3effb58e87fb07db0382bc1e47de5) Signed-off-by: Michael Niedermayer <[email protected]>
-rw-r--r--libswresample/resample.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/libswresample/resample.c b/libswresample/resample.c
index fb9da7c354..1288d9fe1f 100644
--- a/libswresample/resample.c
+++ b/libswresample/resample.c
@@ -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;