Browse Source

avcodec/rv30: check rpr before use against maximum

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n2.2-rc1
Michael Niedermayer 12 years ago
parent
commit
d08c6e1101
1 changed files with 5 additions and 0 deletions
  1. +5
    -0
      libavcodec/rv30.c

+ 5
- 0
libavcodec/rv30.c View File

@@ -52,6 +52,11 @@ static int rv30_parse_slice_header(RV34DecContext *r, GetBitContext *gb, SliceIn
si->pts = get_bits(gb, 13); si->pts = get_bits(gb, 13);
rpr = get_bits(gb, av_log2(r->max_rpr) + 1); rpr = get_bits(gb, av_log2(r->max_rpr) + 1);
if(rpr){ if(rpr){
if (rpr > r->max_rpr) {
av_log(avctx, AV_LOG_ERROR, "rpr too large\n");
return AVERROR_INVALIDDATA;
}

if (avctx->extradata_size < rpr * 2 + 8) { if (avctx->extradata_size < rpr * 2 + 8) {
av_log(avctx, AV_LOG_ERROR, av_log(avctx, AV_LOG_ERROR,
"Insufficient extradata - need at least %d bytes, got %d\n", "Insufficient extradata - need at least %d bytes, got %d\n",


Loading…
Cancel
Save