diff options
author | Paul Gilbert | 2015-12-09 21:44:08 -0500 |
---|---|---|
committer | Paul Gilbert | 2015-12-09 21:44:08 -0500 |
commit | c8acaff52146e6b88cd82c344252c14faf985ba9 (patch) | |
tree | 54d15e7a896bdb9c515048d04e8fee8c19969dd2 | |
parent | 4a3160d8c142e49295db2179d801eee21f5f6199 (diff) | |
download | scummvm-rg350-c8acaff52146e6b88cd82c344252c14faf985ba9.tar.gz scummvm-rg350-c8acaff52146e6b88cd82c344252c14faf985ba9.tar.bz2 scummvm-rg350-c8acaff52146e6b88cd82c344252c14faf985ba9.zip |
SHERLOCK: Add validation for journal entry values
-rw-r--r-- | engines/sherlock/journal.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/engines/sherlock/journal.cpp b/engines/sherlock/journal.cpp index e443b6f727..c4aaa07a73 100644 --- a/engines/sherlock/journal.cpp +++ b/engines/sherlock/journal.cpp @@ -715,6 +715,15 @@ void Journal::record(int converseNum, int statementNum, bool replyOnly) { return; } + // Do a bit of validation here + assert(converseNum >= 0 && converseNum < (int)_directory.size()); + const Common::String &dirFilename = _directory[converseNum]; + Common::String locStr(dirFilename.c_str() + 4, dirFilename.c_str() + 6); + int newLocation = atoi(locStr.c_str()); + assert(newLocation >= 1 && newLocation <= (int)_locations.size()); + assert(!_locations[newLocation - 1].empty()); + assert(statementNum >= 0 && statementNum < (int)_vm->_talk->_statements.size()); + // Record the entry into the list _journal.push_back(JournalEntry(converseNum, statementNum, replyOnly)); _index = _journal.size() - 1; @@ -726,7 +735,7 @@ void Journal::record(int converseNum, int statementNum, bool replyOnly) { _index = saveIndex; _sub = saveSub; - // If new lines were added to the ournal, update the total number of lines + // If new lines were added to the journal, update the total number of lines // the journal continues if (!_lines.empty()) { _maxPage += _lines.size(); |