On 02/09/2012 08:13 PM, Alex Converse wrote:

> Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
> ---
>  libavformat/dv.c |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
> 
> diff --git a/libavformat/dv.c b/libavformat/dv.c
> index 5be6118..0201a80 100644
> --- a/libavformat/dv.c
> +++ b/libavformat/dv.c
> @@ -121,6 +121,9 @@ static int dv_extract_audio(uint8_t* frame, uint8_t* 
> ppcm[4],
>      if (quant > 1)
>          return -1; /* unsupported quantization */
>  
> +    if (freq >= FF_ARRAY_ELEMS(dv_audio_frequency))
> +        return AVERROR_INVALIDDATA;
> +
>      size = (sys->audio_min_samples[freq] + smpls) * 4; /* 2ch, 2bytes */
>      half_ch = sys->difseg_size / 2;
>  
> @@ -203,6 +206,12 @@ static int dv_extract_audio_info(DVDemuxContext* c, 
> uint8_t* frame)
>      stype = (as_pack[3] & 0x1f);      /* 0 - 2CH, 2 - 4CH, 3 - 8CH */
>      quant =  as_pack[4] & 0x07;       /* 0 - 16bit linear, 1 - 12bit 
> nonlinear */
>  
> +    if (freq >= FF_ARRAY_ELEMS(dv_audio_frequency)) {
> +        av_log(c->fctx, AV_LOG_ERROR,
> +               "Unrecognized audio sample rate index (%d)\n", freq);
> +        return 0;
> +    }
> +
>      if (stype > 3) {
>          av_log(c->fctx, AV_LOG_ERROR, "stype %d is invalid\n", stype);
>          c->ach = 0;


looks good.

-Justin

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to