[Scummvm-git-logs] scummvm master -> 6585c8e42263d0a27c1b5291cf424cc064c1d3c5

athrxx athrxx at scummvm.org
Tue Oct 26 18:26:44 UTC 2021


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
cfb9bfc8c9 KYRA: (LOL) - fix invalid use after free
6585c8e422 KYRA: (LOL) - refactor `LoLEngine::snd_loadSoundFile`


Commit: cfb9bfc8c9e28af353a93d969309ad19201e1fae
    https://github.com/scummvm/scummvm/commit/cfb9bfc8c9e28af353a93d969309ad19201e1fae
Author: Benoit Pierre (benoit.pierre at gmail.com)
Date: 2021-10-26T20:26:39+02:00

Commit Message:
KYRA: (LOL) - fix invalid use after free

It's possible for `snd_loadSoundFile` to be called with a negative track number (e.g. -1).

Changed paths:
    engines/kyra/sound/sound_lol.cpp


diff --git a/engines/kyra/sound/sound_lol.cpp b/engines/kyra/sound/sound_lol.cpp
index 08b4245418..661832f774 100644
--- a/engines/kyra/sound/sound_lol.cpp
+++ b/engines/kyra/sound/sound_lol.cpp
@@ -249,7 +249,7 @@ void LoLEngine::snd_loadSoundFile(int track) {
 	if (_sound->musicEnabled()) {
 		if (_flags.platform == Common::kPlatformDOS) {
 			int t = (track - 250) * 3;
-			if (_curMusicFileIndex != _musicTrackMap[t] || _curMusicFileExt != (char)_musicTrackMap[t + 1]) {
+			if (t >= 0 && (_curMusicFileIndex != _musicTrackMap[t] || _curMusicFileExt != (char)_musicTrackMap[t + 1])) {
 				snd_stopMusic();
 				_sound->loadSoundFile(Common::String::format("LORE%02d%c", _musicTrackMap[t], (char)_musicTrackMap[t + 1]));
 				_curMusicFileIndex = _musicTrackMap[t];


Commit: 6585c8e42263d0a27c1b5291cf424cc064c1d3c5
    https://github.com/scummvm/scummvm/commit/6585c8e42263d0a27c1b5291cf424cc064c1d3c5
Author: Benoit Pierre (benoit.pierre at gmail.com)
Date: 2021-10-26T20:26:39+02:00

Commit Message:
KYRA: (LOL) - refactor `LoLEngine::snd_loadSoundFile`

No functional changes.

Changed paths:
    engines/kyra/sound/sound_lol.cpp


diff --git a/engines/kyra/sound/sound_lol.cpp b/engines/kyra/sound/sound_lol.cpp
index 661832f774..6e2f074a9a 100644
--- a/engines/kyra/sound/sound_lol.cpp
+++ b/engines/kyra/sound/sound_lol.cpp
@@ -246,19 +246,15 @@ void LoLEngine::snd_playQueuedEffects() {
 }
 
 void LoLEngine::snd_loadSoundFile(int track) {
-	if (_sound->musicEnabled()) {
-		if (_flags.platform == Common::kPlatformDOS) {
-			int t = (track - 250) * 3;
-			if (t >= 0 && (_curMusicFileIndex != _musicTrackMap[t] || _curMusicFileExt != (char)_musicTrackMap[t + 1])) {
-				snd_stopMusic();
-				_sound->loadSoundFile(Common::String::format("LORE%02d%c", _musicTrackMap[t], (char)_musicTrackMap[t + 1]));
-				_curMusicFileIndex = _musicTrackMap[t];
-				_curMusicFileExt = (char)_musicTrackMap[t + 1];
-			} else {
-				snd_stopMusic();
-			}
-		}
-	}
+	if (!_sound->musicEnabled() || _flags.platform != Common::kPlatformDOS)
+		return;
+	snd_stopMusic();
+	int t = (track - 250) * 3;
+	if (t < 0 || (_curMusicFileIndex == _musicTrackMap[t] && _curMusicFileExt == (char)_musicTrackMap[t + 1]))
+		return;
+	_sound->loadSoundFile(Common::String::format("LORE%02d%c", _musicTrackMap[t], (char)_musicTrackMap[t + 1]));
+	_curMusicFileIndex = _musicTrackMap[t];
+	_curMusicFileExt = (char)_musicTrackMap[t + 1];
 }
 
 int LoLEngine::snd_playTrack(int track) {




More information about the Scummvm-git-logs mailing list