avcodec/diracdec: fix undefined behavior with shifts
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 16 Apr 2014 00:06:37 +0000 (02:06 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 23 Jun 2014 14:51:08 +0000 (16:51 +0200)
Fixes part of Ticket3466
Found-by: Andrey_Karpov / PVS-Studio
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit b8598f6ce61ccda3f2ff0c730b009fb650e42986)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/diracdec.c

index 4990659..dfd3734 100644 (file)
@@ -1360,8 +1360,8 @@ static int mc_subpel(DiracContext *s, DiracBlock *block, const uint8_t *src[5],
         motion_y >>= s->chroma_y_shift;
     }
 
-    mx         = motion_x & ~(-1 << s->mv_precision);
-    my         = motion_y & ~(-1 << s->mv_precision);
+    mx         = motion_x & ~(-1U << s->mv_precision);
+    my         = motion_y & ~(-1U << s->mv_precision);
     motion_x >>= s->mv_precision;
     motion_y >>= s->mv_precision;
     /* normalize subpel coordinates to epel */