summaryrefslogtreecommitdiffstats
path: root/libavresample
diff options
context:
space:
mode:
authorLuca Barbato <lu_zero@gentoo.org>2015-04-28 01:55:10 +0200
committerLuca Barbato <lu_zero@gentoo.org>2015-04-28 23:51:51 +0200
commit0ac8ff618c5e6d878c547a8877e714ed728950ce (patch)
treee8837d8e2a7ce7db32e6af73b8b1c10b16a2611f /libavresample
parent82de8d71118f4eafd6a43e9ea9169bd411793798 (diff)
downloadffmpeg-streaming-0ac8ff618c5e6d878c547a8877e714ed728950ce.zip
ffmpeg-streaming-0ac8ff618c5e6d878c547a8877e714ed728950ce.tar.gz
avresample: Reallocate the internal buffer to the correct size
Fixes the corner case in which the internal buffer size is larger than input buffer provided and resizing it before moving the left over samples would make it write to now unallocated memory. Bug-Id: 825 CC: libav-stable@libav.org Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Diffstat (limited to 'libavresample')
-rw-r--r--libavresample/resample.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libavresample/resample.c b/libavresample/resample.c
index bf766a2..86a761b 100644
--- a/libavresample/resample.c
+++ b/libavresample/resample.c
@@ -434,7 +434,9 @@ int ff_audio_resample(ResampleContext *c, AudioData *dst, AudioData *src)
int bps = av_get_bytes_per_sample(c->avr->internal_sample_fmt);
int i;
- ret = ff_audio_data_realloc(c->buffer, in_samples + c->padding_size);
+ ret = ff_audio_data_realloc(c->buffer,
+ FFMAX(in_samples, in_leftover) +
+ c->padding_size);
if (ret < 0) {
av_log(c->avr, AV_LOG_ERROR, "Error reallocating resampling buffer\n");
return AVERROR(ENOMEM);
OpenPOWER on IntegriCloud