From e24c31b656254b2516befbde78aeaca0122a6010 Mon Sep 17 00:00:00 2001 From: Rostislav Pehlivanov Date: Wed, 13 Jul 2016 23:35:03 +0100 Subject: [PATCH] dirac_vlc: fix undefined shifts Shifting by more than 63 bits is undefined behavior, athough any compiler not returning 0 after shifting by any amount would be insane. Found by Coverity, fixes CID1363959 and CID1363960 Signed-off-by: Rostislav Pehlivanov --- libavcodec/dirac_vlc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/dirac_vlc.c b/libavcodec/dirac_vlc.c index d1271e56a0..caa6413e76 100644 --- a/libavcodec/dirac_vlc.c +++ b/libavcodec/dirac_vlc.c @@ -37,7 +37,7 @@ int ff_dirac_golomb_read_32bit(DiracGolombLUT *lut_ctx, const uint8_t *buf, int i, b, c_idx = 0; int32_t *dst = (int32_t *)_dst; DiracGolombLUT *future[4], *l = &lut_ctx[2*LUT_SIZE + buf[0]]; - INIT_RESIDUE(res, 0, 0); + INIT_RESIDUE(res, 0, 1); #define APPEND_RESIDUE(N, M) \ N |= M >> (N ## _bits); \ @@ -81,7 +81,7 @@ int ff_dirac_golomb_read_16bit(DiracGolombLUT *lut_ctx, const uint8_t *buf, int i, b, c_idx = 0; int16_t *dst = (int16_t *)_dst; DiracGolombLUT *future[4], *l = &lut_ctx[2*LUT_SIZE + buf[0]]; - INIT_RESIDUE(res, 0, 0); + INIT_RESIDUE(res, 0, 1); #define APPEND_RESIDUE(N, M) \ N |= M >> (N ## _bits); \