mirror of https://github.com/mstorsjo/fdk-aac.git
Prevent integer overflow in sbrDecoder_calculateGainVec().
Bug: 131430997 Test: atest DecoderTestXheAac ; atest DecoderTestAacDrc Change-Id: I359f7f976a5ad5459be7d7b786145988a175e305
This commit is contained in:
parent
2152ae1a5e
commit
a7029823f4
|
@ -1,7 +1,7 @@
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
Software License for The Fraunhofer FDK AAC Codec Library for Android
|
Software License for The Fraunhofer FDK AAC Codec Library for Android
|
||||||
|
|
||||||
© Copyright 1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
© Copyright 1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||||
Forschung e.V. All rights reserved.
|
Forschung e.V. All rights reserved.
|
||||||
|
|
||||||
1. INTRODUCTION
|
1. INTRODUCTION
|
||||||
|
@ -904,23 +904,24 @@ void sbrDecoder_calculateGainVec(FIXP_DBL **sourceBufferReal,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (maxVal != FL2FX_DBL(0.0f)) {
|
if (maxVal != FL2FX_DBL(0.0f)) {
|
||||||
reserve = fixMax(0, CntLeadingZeros(maxVal) - 2);
|
reserve = CntLeadingZeros(maxVal) - 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
nrg_ov = nrg = (FIXP_DBL)0;
|
nrg_ov = nrg = (FIXP_DBL)0;
|
||||||
if (scale_nrg_ov > -31) {
|
if (scale_nrg_ov > -31) {
|
||||||
for (i = startSample; i < overlap; i++) {
|
for (i = startSample; i < overlap; i++) {
|
||||||
nrg_ov += (fPow2Div2(sourceBufferReal[i][loBand] << reserve) +
|
nrg_ov +=
|
||||||
fPow2Div2(sourceBufferImag[i][loBand] << reserve)) >>
|
(fPow2Div2(scaleValue(sourceBufferReal[i][loBand], reserve)) +
|
||||||
sum_scale_ov;
|
fPow2Div2(scaleValue(sourceBufferImag[i][loBand], reserve))) >>
|
||||||
|
sum_scale_ov;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
scale_nrg_ov = 0;
|
scale_nrg_ov = 0;
|
||||||
}
|
}
|
||||||
if (scale_nrg > -31) {
|
if (scale_nrg > -31) {
|
||||||
for (i = overlap; i < stopSample; i++) {
|
for (i = overlap; i < stopSample; i++) {
|
||||||
nrg += (fPow2Div2(sourceBufferReal[i][loBand] << reserve) +
|
nrg += (fPow2Div2(scaleValue(sourceBufferReal[i][loBand], reserve)) +
|
||||||
fPow2Div2(sourceBufferImag[i][loBand] << reserve)) >>
|
fPow2Div2(scaleValue(sourceBufferImag[i][loBand], reserve))) >>
|
||||||
sum_scale;
|
sum_scale;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue