rv10: check that extradata is large enough
authorAnton Khirnov <anton@khirnov.net>
Tue, 9 Apr 2013 18:33:25 +0000 (20:33 +0200)
committerReinhard Tartler <siretart@tauware.de>
Wed, 24 Apr 2013 19:01:14 +0000 (21:01 +0200)
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC:libav-stable@libav.org

(cherry picked from commit 01d376f598fe95478036f5d1e3e5e14ffe32d4bf)

Conflicts:

libavcodec/rv10.c

libavcodec/rv10.c

index 58604d19476caf14cc79c6ecc36da0c94381a3ac..4f64ec29b3d437106b3afd1b47348d3d4a581ddf 100644 (file)
@@ -341,6 +341,11 @@ static int rv20_decode_picture_header(MpegEncContext *s)
         f = get_bits(&s->gb, rpr_bits);
 
         if(f){
+            if (s->avctx->extradata_size < 8 + 2 * f) {
+                av_log(s->avctx, AV_LOG_ERROR, "Extradata too small.\n");
+                return AVERROR_INVALIDDATA;
+            }
+
             new_w= 4*((uint8_t*)s->avctx->extradata)[6+2*f];
             new_h= 4*((uint8_t*)s->avctx->extradata)[7+2*f];
         }else{