avcodec/motion_est: Fix undefined shifts in cmp_inline()
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 1 Jul 2015 11:41:26 +0000 (13:41 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 1 Jul 2015 11:42:06 +0000 (13:42 +0200)
Fixes: signal_sigsegv_35eac16_2762_cov_2704249783_missing_frames.avi

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/motion_est.c

index 96aa9ac..9e184df 100644 (file)
@@ -183,8 +183,8 @@ static av_always_inline int cmp_inline(MpegEncContext *s, const int x, const int
     const int stride= c->stride;
     const int uvstride= c->uvstride;
     const int dxy= subx + (suby<<(1+qpel)); //FIXME log2_subpel?
-    const int hx= subx + (x<<(1+qpel));
-    const int hy= suby + (y<<(1+qpel));
+    const int hx= subx + x*(1<<(1+qpel));
+    const int hy= suby + y*(1<<(1+qpel));
     uint8_t * const * const ref= c->ref[ref_index];
     uint8_t * const * const src= c->src[src_index];
     int d;