diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-10-16 21:18:15 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-10-16 22:35:27 +0200 |
commit | f6bb2cd1b048a9169827368241769a2a7887efdd (patch) | |
tree | d4ce3c7daf462a744b0f0bd6c142d09edb3d84af | |
parent | 080c846f5999f71f2e1f46327656f3cc7080f700 (diff) | |
download | ffmpeg-f6bb2cd1b048a9169827368241769a2a7887efdd.tar.gz |
swresample/resample: fix invert_initial_buffer() after flush
Fixes: asan_heap-uaf_2071250_7_139.ogg
Fixes: assertion failure
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libswresample/resample.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libswresample/resample.c b/libswresample/resample.c index 2a8aa7e2d0..d0f6e20788 100644 --- a/libswresample/resample.c +++ b/libswresample/resample.c @@ -399,11 +399,11 @@ static int invert_initial_buffer(ResampleContext *c, AudioData *dst, const Audio res = num - *out_sz; *out_idx = c->filter_length + (c->index >> c->phase_shift); - *out_sz = 1 + c->filter_length * 2 - *out_idx; + *out_sz = FFMAX(*out_sz + c->filter_length, + 1 + c->filter_length * 2) - *out_idx; c->index &= c->phase_mask; - av_assert1(res > 0); - return res; + return FFMAX(res, 0); } struct Resampler const swri_resampler={ |