diff options
author | Michael Niedermayer | 2014-04-08 00:19:07 +0200 |
---|---|---|
committer | Michael Niedermayer | 2014-04-08 00:25:49 +0200 |
commit | f9158b01d0f3effb58e87fb07db0382bc1e47de5 (patch) | |
tree | 96888283b1878177eec7a511b3b36b40a247d0d5 /libswresample | |
parent | 0d225863f2c9855c6c39890da63f1fc6d6fb9391 (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 <michaelni@gmx.at>
Diffstat (limited to 'libswresample')
-rw-r--r-- | libswresample/resample.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/libswresample/resample.c b/libswresample/resample.c index 581382faa6..77653a7a9f 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; |