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

Reply via email to