[Scummvm-git-logs] scummvm master -> c2783e166b08269a6357c257c7ddd3b3518371f4
sluicebox
noreply at scummvm.org
Thu Apr 13 20:18:02 UTC 2023
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
83f3c69e80 AGI: Fix OOB array access in MickeyEngine::inventory
2baf89fa82 AGI: Fix OOB array access in MickeyEngine::drawRoom
c2783e166b AGI: Fix memory leak in WinAGI parser
Commit: 83f3c69e80b7c46a6086367a7c20fa89d97c78ed
https://github.com/scummvm/scummvm/commit/83f3c69e80b7c46a6086367a7c20fa89d97c78ed
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2023-04-13T13:15:51-07:00
Commit Message:
AGI: Fix OOB array access in MickeyEngine::inventory
Code tested for indexer -1 after accessing array
Coverity issue 1003549
Changed paths:
engines/agi/preagi/mickey.cpp
diff --git a/engines/agi/preagi/mickey.cpp b/engines/agi/preagi/mickey.cpp
index 4f12341d209..f5a64f65a12 100644
--- a/engines/agi/preagi/mickey.cpp
+++ b/engines/agi/preagi/mickey.cpp
@@ -1380,7 +1380,7 @@ void MickeyEngine::inventory() {
drawStr(IDI_MSA_ROW_INV_CRYSTALS, IDI_MSA_COL_INV_ITEMS, IDA_DEFAULT, szCrystals);
for (int iItem = 0; iItem < IDI_MSA_MAX_ITEM; iItem++) {
- if (_gameStateMickey.fItem[_gameStateMickey.iItem[iItem]] && (_gameStateMickey.iItem[iItem] != IDI_MSA_OBJECT_NONE)) {
+ if ((_gameStateMickey.iItem[iItem] != IDI_MSA_OBJECT_NONE) && _gameStateMickey.fItem[_gameStateMickey.iItem[iItem]]) {
drawStr(iRow++, IDI_MSA_COL_INV_ITEMS, IDA_DEFAULT, (const char *)IDS_MSA_NAME_ITEM[_gameStateMickey.iItem[iItem]]);
}
}
Commit: 2baf89fa827f37f2039415107dc3514e2fa20f8c
https://github.com/scummvm/scummvm/commit/2baf89fa827f37f2039415107dc3514e2fa20f8c
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2023-04-13T13:15:51-07:00
Commit Message:
AGI: Fix OOB array access in MickeyEngine::drawRoom
Code tested the wrong maximum array size
Coverity issue 1004027
Changed paths:
engines/agi/preagi/mickey.cpp
diff --git a/engines/agi/preagi/mickey.cpp b/engines/agi/preagi/mickey.cpp
index f5a64f65a12..6230ddc893e 100644
--- a/engines/agi/preagi/mickey.cpp
+++ b/engines/agi/preagi/mickey.cpp
@@ -876,12 +876,8 @@ void MickeyEngine::drawRoom() {
}
// Draw room objects
- if (_gameStateMickey.iRoom >= IDI_MSA_MAX_PIC_ROOM) {
- drawRoomAnimation();
- return;
- }
-
- if (_gameStateMickey.iRmObj[_gameStateMickey.iRoom] != IDI_MSA_OBJECT_NONE) {
+ if (_gameStateMickey.iRoom < IDI_MSA_MAX_ROOM &&
+ _gameStateMickey.iRmObj[_gameStateMickey.iRoom] != IDI_MSA_OBJECT_NONE) {
readOfsData(IDO_MSA_ROOM_OBJECT_XY_OFFSETS,
_gameStateMickey.iRmObj[_gameStateMickey.iRoom], buffer, sizeof(buffer));
Commit: c2783e166b08269a6357c257c7ddd3b3518371f4
https://github.com/scummvm/scummvm/commit/c2783e166b08269a6357c257c7ddd3b3518371f4
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2023-04-13T13:15:51-07:00
Commit Message:
AGI: Fix memory leak in WinAGI parser
Coverity issue 1446670
Changed paths:
engines/agi/wagparser.cpp
engines/agi/wagparser.h
diff --git a/engines/agi/wagparser.cpp b/engines/agi/wagparser.cpp
index efd488a1148..2872efb3827 100644
--- a/engines/agi/wagparser.cpp
+++ b/engines/agi/wagparser.cpp
@@ -170,11 +170,11 @@ bool WagFileParser::checkWagVersion(Common::SeekableReadStream &stream) {
}
}
-void WagFileParser::addPropFromIni(Common::INIFile *iniWagFile, Common::String section, Common::String key, Agi::WagProperty::WagPropertyCode code) {
+void WagFileParser::addPropFromIni(Common::INIFile &iniWagFile, Common::String section, Common::String key, Agi::WagProperty::WagPropertyCode code) {
WagProperty property;
property.setPropCode(code);
Common::String value;
- if (iniWagFile->getKey(key, section, value)) {
+ if (iniWagFile.getKey(key, section, value)) {
property.setPropDataSize(value);
_propList.push_back(property);
}
@@ -211,8 +211,8 @@ bool WagFileParser::parse(const Common::FSNode &node) {
} else {
// Invalid WinAGI version string or it couldn't be read
// Let's try to read WAG file as newer INI format
- Common::INIFile *iniWagFile = new Common::INIFile();
- _parsedOk = iniWagFile->loadFromStream(*stream);
+ Common::INIFile iniWagFile;
+ _parsedOk = iniWagFile.loadFromStream(*stream);
if (_parsedOk) {
addPropFromIni(iniWagFile, "General", "Interpreter", WagProperty::PC_INTVERSION);
addPropFromIni(iniWagFile, "General", "GameID", WagProperty::PC_GAMEID);
diff --git a/engines/agi/wagparser.h b/engines/agi/wagparser.h
index 9627b00037a..d1e7a3f9d6b 100644
--- a/engines/agi/wagparser.h
+++ b/engines/agi/wagparser.h
@@ -232,7 +232,7 @@ public:
* @param key ini key
* @param code corresponding WAG code
*/
- void addPropFromIni(Common::INIFile *iniWagFile, Common::String section, Common::String key, Agi::WagProperty::WagPropertyCode code);
+ void addPropFromIni(Common::INIFile &iniWagFile, Common::String section, Common::String key, Agi::WagProperty::WagPropertyCode code);
/**
* Loads a *.wag file and parses it.
More information about the Scummvm-git-logs
mailing list