From 3be27e07d3c5239f6d53b86aebcd201f722df4d0 Mon Sep 17 00:00:00 2001 From: Ganesh Ajjanagadde Date: Fri, 9 Oct 2015 14:43:04 -0400 Subject: [PATCH] avcodec/mpegvideoenc: fix undefined negative left shift This should fix the first undefined behavior reported in: https://trac.ffmpeg.org/ticket/4727. I can't reproduce the runtime behavior reported in the ticket, hence I can't confirm that this actually fixes the exact issue reported in the ticket. Regardless, I can confirm that this is a genuine issue, and that negative shifts can (and do) occur, fixed by this. Tested with FATE. Signed-off-by: Ganesh Ajjanagadde Signed-off-by: Michael Niedermayer --- libavcodec/mpegvideo_enc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 8e565c12a7..a6af8bda24 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -148,7 +148,7 @@ void ff_convert_matrix(MpegEncContext *s, int (*qmat)[64], qmat16[qscale][0][i] == 128 * 256) qmat16[qscale][0][i] = 128 * 256 - 1; qmat16[qscale][1][i] = - ROUNDED_DIV(bias << (16 - QUANT_BIAS_SHIFT), + ROUNDED_DIV(bias * (1<<(16 - QUANT_BIAS_SHIFT)), qmat16[qscale][0][i]); } }