[FFmpeg-cvslog] alsdec: check block length

Thilo Borgmann thilo.borgmann at googlemail.com
Wed Dec 12 15:34:05 CET 2012


Some nits follow...


Am 12.12.12 14:20, schrieb Michael Niedermayer:
> ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Wed Dec 12 12:28:45 2012 +0100| [0ceca269b66ec12a23bf0907bd2c220513cdbf16] | committer: Michael Niedermayer
> 
> alsdec: check block length
> 
> Fix writing over the end

Writing where over what end in which case?

> [...]
>  /** Read the block data for a constant block
>   */
> -static void read_const_block_data(ALSDecContext *ctx, ALSBlockData *bd)
> +static int read_const_block_data(ALSDecContext *ctx, ALSBlockData *bd)
>  {
>      ALSSpecificConfig *sconf = &ctx->sconf;
>      AVCodecContext *avctx    = ctx->avctx;
>      GetBitContext *gb        = &ctx->gb;
>  
> +    if (bd->block_length <= 0)
> +        return -1;
> +

Isn't there a proper AVERROR_ return value defined?
Yes, this is not consistently done within the decoder. However, this is a new
return value...

>      *bd->raw_samples = 0;
>      *bd->const_block = get_bits1(gb);    // 1 = constant value, 0 = zero block (silence)
>      bd->js_blocks    = get_bits1(gb);
> @@ -573,6 +576,8 @@ static void read_const_block_data(ALSDecContext *ctx, ALSBlockData *bd)
>  
>      // ensure constant block decoding by reusing this field
>      *bd->const_block = 1;
> +
> +    return 0;
>  }
>  
>  
> @@ -972,7 +977,8 @@ static int read_block(ALSDecContext *ctx, ALSBlockData *bd)

>          if (read_var_block_data(ctx, bd))
>              return -1;
>      } else {
> -        read_const_block_data(ctx, bd);

> +        if (read_const_block_data(ctx, bd) < 0)

I would prefer it to be consistent with the handling of read_var_block_data()...
so either " < 0 " for both or for none.



Also I don't know if I've already seen this patch some time ago... then it is ok
to find it in Log but otherwise I would prefer to find something new in Devel.

-Thilo




More information about the ffmpeg-cvslog mailing list