Browse Source

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>
tags/n2.4.10
Luca Barbato Vittorio Giovara 10 years ago
parent
commit
744d813bcf
1 changed files with 3 additions and 1 deletions
  1. +3
    -1
      libavresample/resample.c

+ 3
- 1
libavresample/resample.c View File

@@ -432,7 +432,9 @@ int ff_audio_resample(ResampleContext *c, AudioData *dst, AudioData *src)
int bps = av_get_bytes_per_sample(c->avr->internal_sample_fmt); int bps = av_get_bytes_per_sample(c->avr->internal_sample_fmt);
int i; 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) { if (ret < 0) {
av_log(c->avr, AV_LOG_ERROR, "Error reallocating resampling buffer\n"); av_log(c->avr, AV_LOG_ERROR, "Error reallocating resampling buffer\n");
return AVERROR(ENOMEM); return AVERROR(ENOMEM);


Loading…
Cancel
Save