Check dia size a little more. Fixes CID80.
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 27 May 2008 23:41:10 +0000 (23:41 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 27 May 2008 23:41:10 +0000 (23:41 +0000)
Originally committed as revision 13481 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/motion_est.c

index 54bc93d..b97b441 100644 (file)
@@ -235,6 +235,12 @@ void ff_init_me(MpegEncContext *s){
     MotionEstContext * const c= &s->me;
     int cache_size= FFMIN(ME_MAP_SIZE>>ME_MAP_SHIFT, 1<<ME_MAP_SHIFT);
     int dia_size= FFMAX(FFABS(s->avctx->dia_size)&255, FFABS(s->avctx->pre_dia_size)&255);
+
+    if(FFMIN(s->avctx->dia_size, s->avctx->pre_dia_size) < -ME_MAP_SIZE){
+        av_log(s->avctx, AV_LOG_ERROR, "ME_MAP size is too small for SAB diamond\n");
+        return -1;
+    }
+
     c->avctx= s->avctx;
 
     if(cache_size < 2*dia_size && !c->stride){