Skip to content

Commit b026654

Browse files
Wei Jiaandi34
authored andcommitted
Sonivox: sanity check numSamples.
Bug: 26366256 Change-Id: I066888c25035ea4c60c88f316db4508dc4dab6bc
1 parent 161a3de commit b026654

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

arm-wt-22k/lib_src/eas_wtengine.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
* includes
3333
*------------------------------------
3434
*/
35+
#include "log/log.h"
36+
3537
#include "eas_types.h"
3638
#include "eas_math.h"
3739
#include "eas_audioconst.h"
@@ -88,6 +90,10 @@ void WT_VoiceGain (S_WT_VOICE *pWTVoice, S_WT_INT_FRAME *pWTIntFrame)
8890

8991
/* initialize some local variables */
9092
numSamples = pWTIntFrame->numSamples;
93+
if (numSamples <= 0) {
94+
ALOGE("b/26366256");
95+
return;
96+
}
9197
pMixBuffer = pWTIntFrame->pMixBuffer;
9298
pInputBuffer = pWTIntFrame->pAudioBuffer;
9399

@@ -182,6 +188,10 @@ void WT_Interpolate (S_WT_VOICE *pWTVoice, S_WT_INT_FRAME *pWTIntFrame)
182188

183189
/* initialize some local variables */
184190
numSamples = pWTIntFrame->numSamples;
191+
if (numSamples <= 0) {
192+
ALOGE("b/26366256");
193+
return;
194+
}
185195
pOutputBuffer = pWTIntFrame->pAudioBuffer;
186196

187197
loopEnd = (const EAS_SAMPLE*) pWTVoice->loopEnd + 1;
@@ -275,6 +285,10 @@ void WT_InterpolateNoLoop (S_WT_VOICE *pWTVoice, S_WT_INT_FRAME *pWTIntFrame)
275285

276286
/* initialize some local variables */
277287
numSamples = pWTIntFrame->numSamples;
288+
if (numSamples <= 0) {
289+
ALOGE("b/26366256");
290+
return;
291+
}
278292
pOutputBuffer = pWTIntFrame->pAudioBuffer;
279293

280294
phaseInc = pWTIntFrame->frame.phaseIncrement;
@@ -363,6 +377,10 @@ void WT_VoiceFilter (S_FILTER_CONTROL *pFilter, S_WT_INT_FRAME *pWTIntFrame)
363377

364378
/* initialize some local variables */
365379
numSamples = pWTIntFrame->numSamples;
380+
if (numSamples <= 0) {
381+
ALOGE("b/26366256");
382+
return;
383+
}
366384
pAudioBuffer = pWTIntFrame->pAudioBuffer;
367385

368386
z1 = pFilter->z1;
@@ -426,6 +444,10 @@ void WT_VoiceFilter (S_FILTER_CONTROL *pFilter, S_WT_INT_FRAME *pWTIntFrame)
426444

427445
/* initialize some local variables */
428446
numSamples = pWTIntFrame->numSamples;
447+
if (numSamples <= 0) {
448+
ALOGE("b/26366256");
449+
return;
450+
}
429451
pOutputBuffer = pWTIntFrame->pAudioBuffer;
430452
phaseInc = pWTIntFrame->frame.phaseIncrement;
431453

@@ -569,6 +591,10 @@ void WT_InterpolateMono (S_WT_VOICE *pWTVoice, S_WT_INT_FRAME *pWTIntFrame)
569591
EAS_I8 *pLoopStart;
570592

571593
numSamples = pWTIntFrame->numSamples;
594+
if (numSamples <= 0) {
595+
ALOGE("b/26366256");
596+
return;
597+
}
572598
pMixBuffer = pWTIntFrame->pMixBuffer;
573599

574600
/* calculate gain increment */

arm-wt-22k/lib_src/eas_wtsynth.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
*/
2929

3030
// includes
31+
#include "log/log.h"
32+
3133
#include "eas_data.h"
3234
#include "eas_report.h"
3335
#include "eas_host.h"
@@ -467,6 +469,10 @@ EAS_BOOL WT_CheckSampleEnd (S_WT_VOICE *pWTVoice, S_WT_INT_FRAME *pWTIntFrame, E
467469
} else {
468470
pWTIntFrame->numSamples = numSamples;
469471
}
472+
if (pWTIntFrame->numSamples < 0) {
473+
ALOGE("b/26366256");
474+
pWTIntFrame->numSamples = 0;
475+
}
470476

471477
/* sound will be done this frame */
472478
done = EAS_TRUE;

0 commit comments

Comments
 (0)