[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