diff options
author | Erik de Castro Lopo <erikd@mega-nerd.com> | 2019-08-25 17:24:47 +1000 |
---|---|---|
committer | Erik de Castro Lopo <erikd@mega-nerd.com> | 2019-09-16 06:18:07 +1000 |
commit | 09f47c00e18a77390acfc2e725564542756effaf (patch) | |
tree | 8573655b3c8120006d02b1849a46b4fd299ce57a | |
parent | c34c3459b514df02d922a882d406986e7f47afa4 (diff) | |
download | flac-09f47c00e18a77390acfc2e725564542756effaf.tar.gz |
libFLAC/bitreader.c: Fix shift invoking undefined behaviour
Credit: Oss-Fuzz
Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=16458
Testcase: fuzzer_decoder-5649174900506624
-rw-r--r-- | src/libFLAC/bitreader.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libFLAC/bitreader.c b/src/libFLAC/bitreader.c index 90507435..62e11991 100644 --- a/src/libFLAC/bitreader.c +++ b/src/libFLAC/bitreader.c @@ -456,7 +456,7 @@ FLAC__bool FLAC__bitreader_read_raw_int32(FLAC__BitReader *br, FLAC__int32 *val, { FLAC__uint32 uval, mask; /* OPT: inline raw uint32 code here, or make into a macro if possible in the .h file */ - if(!FLAC__bitreader_read_raw_uint32(br, &uval, bits)) + if (bits < 1 || ! FLAC__bitreader_read_raw_uint32(br, &uval, bits)) return false; /* sign-extend *val assuming it is currently bits wide. */ /* From: https://graphics.stanford.edu/~seander/bithacks.html#FixedSignExtend */ |