libFLAC: Fix an out-of-bounds heap read
authorErik de Castro Lopo <erikd@mega-nerd.com>
Fri, 25 Sep 2015 22:17:13 +0000 (08:17 +1000)
committerErik de Castro Lopo <erikd@mega-nerd.com>
Sun, 27 Sep 2015 23:18:27 +0000 (09:18 +1000)
commitd91eb4ae756feb7fc1c4be6e465c58ca24471d22
tree10e3728b6594f1a4748afe0c35082783dedfd1a4
parent5fab59f8bc7a037fe623f8e3044e497f291679a3
libFLAC: Fix an out-of-bounds heap read

When doing a flac to flac conversion, bad data read from the input file
was making it all the way through the encoder to cause a read past the
end of the buffer in the CRC calculation.

Fix had two parts:

* bitwriter.c: Make a debug only assert (assert bits < 32) into a proper
  failure.
* stream_encoder.c: Catch the error condition of wasted bits being greater
  that bits_pers_sample and limit it to the bits_per_sample value.

Found using the American Fuzzy Lop fuzzer.
src/libFLAC/bitwriter.c
src/libFLAC/stream_encoder.c