mirror of https://github.com/mstorsjo/fdk-aac.git
Don't use an enum for a value read directly from the bitstream
The enum only defined values 1-7, while the variable can be set to any value between 0 and 15 that is read from the bitstream by FDKreadBits(hBs, 4). This fixes undefined behaviour sanitizer errors. Fixes: 19500/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_LIBFDK_AAC_fuzzer-5730449188192256 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
This commit is contained in:
parent
10fcf89a3e
commit
28fcbe9fae
|
@ -911,7 +911,7 @@ static void _skipEqCoefficients(HANDLE_FDK_BITSTREAM hBs) {
|
||||||
firFilterOrder;
|
firFilterOrder;
|
||||||
int uniqueEqSubbandGainsCount, eqSubbandGainRepresentation,
|
int uniqueEqSubbandGainsCount, eqSubbandGainRepresentation,
|
||||||
eqSubbandGainCount;
|
eqSubbandGainCount;
|
||||||
EQ_SUBBAND_GAIN_FORMAT eqSubbandGainFormat;
|
int eqSubbandGainFormat;
|
||||||
|
|
||||||
eqDelayMaxPresent = FDKreadBits(hBs, 1);
|
eqDelayMaxPresent = FDKreadBits(hBs, 1);
|
||||||
if (eqDelayMaxPresent) {
|
if (eqDelayMaxPresent) {
|
||||||
|
@ -952,7 +952,7 @@ static void _skipEqCoefficients(HANDLE_FDK_BITSTREAM hBs) {
|
||||||
uniqueEqSubbandGainsCount = FDKreadBits(hBs, 6);
|
uniqueEqSubbandGainsCount = FDKreadBits(hBs, 6);
|
||||||
if (uniqueEqSubbandGainsCount > 0) {
|
if (uniqueEqSubbandGainsCount > 0) {
|
||||||
eqSubbandGainRepresentation = FDKreadBits(hBs, 1);
|
eqSubbandGainRepresentation = FDKreadBits(hBs, 1);
|
||||||
eqSubbandGainFormat = (EQ_SUBBAND_GAIN_FORMAT)FDKreadBits(hBs, 4);
|
eqSubbandGainFormat = FDKreadBits(hBs, 4);
|
||||||
switch (eqSubbandGainFormat) {
|
switch (eqSubbandGainFormat) {
|
||||||
case GF_QMF32:
|
case GF_QMF32:
|
||||||
eqSubbandGainCount = 32;
|
eqSubbandGainCount = 32;
|
||||||
|
|
Loading…
Reference in New Issue