aboutsummaryrefslogtreecommitdiff
path: root/src/common/DataStores/DB2FileLoader.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-10-24 01:28:40 +0200
committerShauren <shauren.trinity@gmail.com>2021-10-24 01:28:40 +0200
commit23ec4b4075a5e0931d56523fc2113e7403f410b3 (patch)
tree6023ff1040a79c4c282eb961ee6a127ea4d7a3d6 /src/common/DataStores/DB2FileLoader.cpp
parentf1ecb976ec9db8569f8c7601a05282c9d29778b4 (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.cpp5
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)