summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik de Castro Lopo <erikd@mega-nerd.com>2019-08-25 17:24:47 +1000
committerErik de Castro Lopo <erikd@mega-nerd.com>2019-09-16 06:18:07 +1000
commit09f47c00e18a77390acfc2e725564542756effaf (patch)
tree8573655b3c8120006d02b1849a46b4fd299ce57a
parentc34c3459b514df02d922a882d406986e7f47afa4 (diff)
downloadflac-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.c2
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 */