[FFmpeg-cvslog] dirac_vlc: fix undefined shifts

Rostislav Pehlivanov git at videolan.org
Thu Jul 14 00:54:50 CEST 2016


ffmpeg | branch: master | Rostislav Pehlivanov <atomnuker at gmail.com> | Wed Jul 13 23:35:03 2016 +0100| [e24c31b656254b2516befbde78aeaca0122a6010] | committer: Rostislav Pehlivanov

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 <atomnuker at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e24c31b656254b2516befbde78aeaca0122a6010
---

 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 d1271e5..caa6413 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); \



More information about the ffmpeg-cvslog mailing list