Check for negative sound offset.

svn-id: r16602
This commit is contained in:
Travis Howell 2005-01-20 12:56:27 +00:00
parent ca58bfed3b
commit b9356bbe14
2 changed files with 6 additions and 6 deletions

View File

@ -215,7 +215,7 @@ void Sound::playSound(int soundID, int heOffset, int heChannel, int heFlags) {
size = musicFile.readUint32LE();
if (music_offs > total_size || (size + music_offs > total_size) || size < 0) {
warning("playSound: Bad music offsets");
warning("playSound: Invalid music offset (%d) in music %d", soundID);
musicFile.close();
return;
}
@ -282,8 +282,8 @@ void Sound::playSound(int soundID, int heOffset, int heChannel, int heFlags) {
}
size = READ_BE_UINT32(ptr+4) - 8;
if (heOffset > size) {
warning("playSound: Bad sound offset");
if (heOffset < 0 || heOffset > size) {
warning("playSound: Invalid sound offset (%d) in sound %d", heOffset, soundID);
heOffset = 0;
}
size -= heOffset;

View File

@ -93,11 +93,11 @@ public:
public:
Sound(ScummEngine *parent);
~Sound();
void addSoundToQueue(int sound, int offset = 0, int channel = 0, int heFlags = 0);
void addSoundToQueue2(int sound, int offset = 0, int channel = 0, int heFlags = 0);
void addSoundToQueue(int sound, int heOffset = 0, int heChannel = 0, int heFlags = 0);
void addSoundToQueue2(int sound, int heOffset = 0, int heChannel = 0, int heFlags = 0);
void processSoundQues();
void setOverrideFreq(int freq);
void playSound(int sound, int offset = 0, int channel = 0, int heFlags = 0);
void playSound(int soundID, int heOffset, int heChannel, int heFlags);
void startTalkSound(uint32 offset, uint32 b, int mode, PlayingSoundHandle *handle = NULL);
void stopTalkSound();
bool isMouthSyncOff(uint pos);