On Thu, Oct 13, 2011 at 05:45:53PM -0400, Justin Ruggles wrote:
> ---
> libavcodec/shorten.c | 8 +++++++-
> 1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/libavcodec/shorten.c b/libavcodec/shorten.c
> index ec50fc1..8031758 100644
> --- a/libavcodec/shorten.c
> +++ b/libavcodec/shorten.c
> @@ -550,9 +550,15 @@ static int shorten_decode_frame(AVCodecContext *avctx,
> /* if this is the last channel in the block, output the samples
> */
> s->cur_chan++;
> if (s->cur_chan == s->channels) {
> + int out_size = s->blocksize * s->channels *
> + av_get_bytes_per_sample(avctx->sample_fmt);
> + if (*data_size < out_size) {
> + av_log(avctx, AV_LOG_ERROR, "Output buffer is too
> small\n");
> + return AVERROR(EINVAL);
> + }
> samples = interleave_buffer(samples, s->channels,
> s->blocksize, s->decoded);
> s->cur_chan = 0;
> - *data_size = (int8_t *)samples - (int8_t *)data;
> + *data_size = out_size;
> } else {
> *data_size = 0;
> }
> --
OK
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel