summaryrefslogtreecommitdiff
path: root/libswresample/resample.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-10-16 21:18:15 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-10-16 22:35:27 +0200
commitf6bb2cd1b048a9169827368241769a2a7887efdd (patch)
treed4ce3c7daf462a744b0f0bd6c142d09edb3d84af /libswresample/resample.c
parent080c846f5999f71f2e1f46327656f3cc7080f700 (diff)
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>
Diffstat (limited to 'libswresample/resample.c')
-rw-r--r--libswresample/resample.c6
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={