From: Alex Converse Date: Thu, 19 Nov 2015 23:04:20 +0000 (-0800) Subject: Fix a signed shift overflow in vpx_rb_read_inv_signed_literal. X-Git-Tag: v1.6.0~542^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=42b7c44b2fa40ff8b070809e79f9931526f5fe52;p=libvpx Fix a signed shift overflow in vpx_rb_read_inv_signed_literal. Found with clang -fsanitize=integer Change-Id: I17cb2166c06ff463abfaf9b0e6bc749d0d6fdf94 --- diff --git a/vpx_dsp/bitreader_buffer.c b/vpx_dsp/bitreader_buffer.c index bb917263e..d7b55cf9f 100644 --- a/vpx_dsp/bitreader_buffer.c +++ b/vpx_dsp/bitreader_buffer.c @@ -45,7 +45,7 @@ int vpx_rb_read_inv_signed_literal(struct vpx_read_bit_buffer *rb, int bits) { #if CONFIG_MISC_FIXES const int nbits = sizeof(unsigned) * 8 - bits - 1; - const unsigned value = vpx_rb_read_literal(rb, bits + 1) << nbits; + const unsigned value = (unsigned)vpx_rb_read_literal(rb, bits + 1) << nbits; return ((int) value) >> nbits; #else return vpx_rb_read_signed_literal(rb, bits);