Fix a couple bad bounds checks in VAG/Mpeg.

This commit is contained in:
Unknown W. Brackets 2013-05-18 10:18:52 -07:00
parent e3e5b24bf8
commit 3931f07852
2 changed files with 3 additions and 3 deletions

View file

@ -23,7 +23,7 @@ static const int modeBpp[4] = { 2, 2, 2, 4 };
void MediaEngine::writeVideoImage(u32 bufferPtr, int frameWidth, int videoPixelMode) void MediaEngine::writeVideoImage(u32 bufferPtr, int frameWidth, int videoPixelMode)
{ {
if (videoPixelMode > (int)(sizeof(modeBpp) / sizeof(modeBpp[0])) || videoPixelMode < 0) if (videoPixelMode >= (int)(sizeof(modeBpp) / sizeof(modeBpp[0])) || videoPixelMode < 0)
{ {
ERROR_LOG(ME, "Unexpected videoPixelMode %d, using 0 instead.", videoPixelMode); ERROR_LOG(ME, "Unexpected videoPixelMode %d, using 0 instead.", videoPixelMode);
videoPixelMode = 0; videoPixelMode = 0;

View file

@ -47,7 +47,7 @@ void VagDecoder::DecodeBlock(u8 *&readp) {
int predict_nr = *readp++; int predict_nr = *readp++;
int shift_factor = predict_nr & 0xf; int shift_factor = predict_nr & 0xf;
predict_nr >>= 4; predict_nr >>= 4;
if (predict_nr >= sizeof(f) / sizeof(s8)) { if (predict_nr >= sizeof(f) / sizeof(f[0])) {
predict_nr = 0; predict_nr = 0;
} }
int flags = *readp++; int flags = *readp++;
@ -311,7 +311,7 @@ void SasInstance::Mix(u32 outAddr, u32 inAddr, int leftVol, int rightVol) {
break; break;
case VOICETYPE_PCM: case VOICETYPE_PCM:
{ {
int size = std::min(voice.pcmSize, (int)(numSamples * sizeof(s16))); u32 size = std::min(voice.pcmSize, (int)(numSamples * sizeof(s16)));
Memory::Memcpy(resampleBuffer + 2, voice.pcmAddr, size); Memory::Memcpy(resampleBuffer + 2, voice.pcmAddr, size);
if (numSamples * sizeof(s16) > size) if (numSamples * sizeof(s16) > size)
memset(resampleBuffer + 2 + voice.pcmSize, 0, numSamples * sizeof(s16) - size); memset(resampleBuffer + 2 + voice.pcmSize, 0, numSamples * sizeof(s16) - size);