avcodec/diracdec: fix undefined behavior with shifts
Fixes part of Ticket3466
Found-by: Andrey_Karpov / PVS-Studio
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit b8598f6ce6)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
			
			
This commit is contained in:
		@@ -1342,8 +1342,8 @@ static int mc_subpel(DiracContext *s, DiracBlock *block, const uint8_t *src[5],
 | 
				
			|||||||
        motion_y >>= s->chroma_y_shift;
 | 
					        motion_y >>= s->chroma_y_shift;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    mx         = motion_x & ~(-1 << s->mv_precision);
 | 
					    mx         = motion_x & ~(-1U << s->mv_precision);
 | 
				
			||||||
    my         = motion_y & ~(-1 << s->mv_precision);
 | 
					    my         = motion_y & ~(-1U << s->mv_precision);
 | 
				
			||||||
    motion_x >>= s->mv_precision;
 | 
					    motion_x >>= s->mv_precision;
 | 
				
			||||||
    motion_y >>= s->mv_precision;
 | 
					    motion_y >>= s->mv_precision;
 | 
				
			||||||
    /* normalize subpel coordinates to epel */
 | 
					    /* normalize subpel coordinates to epel */
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user