diff options
author | Shauren <shauren.trinity@gmail.com> | 2021-10-24 01:28:40 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-10-24 01:28:40 +0200 |
commit | 23ec4b4075a5e0931d56523fc2113e7403f410b3 (patch) | |
tree | 6023ff1040a79c4c282eb961ee6a127ea4d7a3d6 /src/common/DataStores/DB2FileLoader.cpp | |
parent | f1ecb976ec9db8569f8c7601a05282c9d29778b4 (diff) |
Core/DataStores: Hackfix broken db2 files that have invalid id tables
Diffstat (limited to 'src/common/DataStores/DB2FileLoader.cpp')
-rw-r--r-- | src/common/DataStores/DB2FileLoader.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/common/DataStores/DB2FileLoader.cpp b/src/common/DataStores/DB2FileLoader.cpp index b45a425617e..274f5c0d796 100644 --- a/src/common/DataStores/DB2FileLoader.cpp +++ b/src/common/DataStores/DB2FileLoader.cpp @@ -1902,6 +1902,11 @@ void DB2FileLoader::Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo) idTable.resize(idTableSize + section.IdTableSize / sizeof(uint32)); if (!source->Read(&idTable[idTableSize], section.IdTableSize)) throw DB2FileLoadException(Trinity::StringFormat("Unable to read non-inline record ids from %s for section %u", source->GetFileName(), i)); + + // This is a hack fix for broken db2 files that have invalid id tables + for (std::size_t i = idTableSize; i < idTable.size(); ++i) + if (idTable[i] <= _header.MinId) + idTable[i] = _header.MinId + i; } if (!(_header.Flags & 0x1) && section.CopyTableCount) |