From b3f55c40cc6e00ee4ae1560b5449e54d3f7012b4 Mon Sep 17 00:00:00 2001 From: Erik de Castro Lopo Date: Mon, 11 Nov 2019 06:42:11 +1100 Subject: libFLAC/bitreader.c: Fix shift invoking undefined behaviour Credit: Oss-Fuzz Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18589 Testcase: fuzzer_decoder-5668806471188480 --- src/libFLAC/bitreader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libFLAC/bitreader.c b/src/libFLAC/bitreader.c index 3df4d02c..d2c058d9 100644 --- a/src/libFLAC/bitreader.c +++ b/src/libFLAC/bitreader.c @@ -462,7 +462,7 @@ FLAC__bool FLAC__bitreader_read_raw_int32(FLAC__BitReader *br, FLAC__int32 *val, return false; /* sign-extend *val assuming it is currently bits wide. */ /* From: https://graphics.stanford.edu/~seander/bithacks.html#FixedSignExtend */ - mask = 1u << (bits - 1); + mask = bits >= 33 ? 0 : 1u << (bits - 1); *val = (uval ^ mask) - mask; return true; } -- cgit v1.2.1