From 23ec4b4075a5e0931d56523fc2113e7403f410b3 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 24 Oct 2021 01:28:40 +0200 Subject: Core/DataStores: Hackfix broken db2 files that have invalid id tables --- src/common/DataStores/DB2FileLoader.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/common/DataStores/DB2FileLoader.cpp') 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) -- cgit v1.2.3