diff options
Diffstat (limited to 'engines/tinsel/saveload.cpp')
-rw-r--r-- | engines/tinsel/saveload.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/engines/tinsel/saveload.cpp b/engines/tinsel/saveload.cpp index 7a973ba4be..983259d515 100644 --- a/engines/tinsel/saveload.cpp +++ b/engines/tinsel/saveload.cpp @@ -155,7 +155,15 @@ static bool syncSaveGameHeader(Common::Serializer &s, SaveGameHeader &hdr) { int tmp = hdr.size - s.bytesSynced(); // Perform sanity check - if (tmp < 0 || hdr.id != SAVEGAME_ID || hdr.ver > CURRENT_VER || hdr.size > 1024) + if (tmp < 0 || + // NOTE: We can't use SAVEGAME_ID here, as this function is called by the launcher + // when deleting saved games. SAVEGAME_ID calls TinselEngine::getVersion(), and + // TinselEngine isn't initialized then. Therefore, we use the two DW savegame + // IDs instead, which means that this sanity check won't detect badly named DW1/DW2 + // saved games (i.e. a DW2 saved game named "dw.xxx"). Refer to bug #3387551. + /*hdr.id != SAVEGAME_ID ||*/ + (hdr.id != DW1_SAVEGAME_ID && hdr.id != DW2_SAVEGAME_ID) || + hdr.ver > CURRENT_VER || hdr.size > 1024) return false; // Skip over any extra bytes s.skip(tmp); |