FS-7465: make sure write buffer is big enough on stereo file handles

This commit is contained in:
Michael Jerris 2015-04-24 09:47:16 -05:00 committed by Brian
parent d3a747ad02
commit dbc124d45e

View File

@ -412,14 +412,14 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_write(switch_file_handle_t *fh,
switch_resample_process(fh->resampler, data, (uint32_t) * len); switch_resample_process(fh->resampler, data, (uint32_t) * len);
if (fh->resampler->to_len > orig_len) { if (fh->resampler->to_len > orig_len) {
if (!fh->dbuf) { if (!fh->dbuf || (fh->dbuflen < fh->resampler->to_len * 2 * fh->channels)) {
void *mem; void *mem;
fh->dbuflen = fh->resampler->to_len * 2 * fh->channels; fh->dbuflen = fh->resampler->to_len * 2 * fh->channels;
mem = realloc(fh->dbuf, fh->dbuflen); mem = realloc(fh->dbuf, fh->dbuflen);
switch_assert(mem); switch_assert(mem);
fh->dbuf = mem; fh->dbuf = mem;
} }
switch_assert(fh->resampler->to_len * 2 *fh->channels <= fh->dbuflen); switch_assert(fh->resampler->to_len * 2 * fh->channels <= fh->dbuflen);
memcpy(fh->dbuf, fh->resampler->to, fh->resampler->to_len * 2 * fh->channels); memcpy(fh->dbuf, fh->resampler->to, fh->resampler->to_len * 2 * fh->channels);
data = fh->dbuf; data = fh->dbuf;
} else { } else {