Browse Source

alsdec: check block length

Fix writing over the end

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Addresses: CVE-2013-0845
tags/n2.2-rc1
Reinhard Tartler 12 years ago
parent
commit
2a0fb7286d
1 changed files with 5 additions and 0 deletions
  1. +5
    -0
      libavcodec/alsdec.c

+ 5
- 0
libavcodec/alsdec.c View File

@@ -1376,6 +1376,11 @@ static int read_frame_data(ALSDecContext *ctx, unsigned int ra_frame)

for (b = 0; b < ctx->num_blocks; b++) {
bd.block_length = div_blocks[b];
if (bd.block_length <= 0) {
av_log(ctx->avctx, AV_LOG_WARNING,
"Invalid block length %d in channel data!\n", bd.block_length);
continue;
}

for (c = 0; c < avctx->channels; c++) {
bd.const_block = ctx->const_block + c;


Loading…
Cancel
Save