Core/Misc: Fix dynamic analysis issues

Fix some dynamic analysis issues reported by Valgrind
This commit is contained in:
jackpoz
2015-01-25 14:53:30 +01:00
parent ddda0e7a55
commit 44865d0466
2 changed files with 4 additions and 2 deletions

View File

@@ -273,7 +273,7 @@ uint32 ReadBuild(int locale)
exit(1);
}
std::string text = buff;
std::string text = std::string(buff, readBytes);
CascCloseFile(dbcFile);
size_t pos = text.find("version=\"");
@@ -358,6 +358,7 @@ void ReadAreaTableDBC()
size_t area_count = dbc.getRecordCount();
maxAreaId = dbc.getMaxId();
areas = new uint16[maxAreaId + 1];
memset(areas, 0xFF, sizeof(uint16) * (maxAreaId + 1));
for (uint32 x = 0; x < area_count; ++x)
areas[dbc.getRecord(x).getUInt(0)] = dbc.getRecord(x).getUInt(3);

View File

@@ -111,7 +111,8 @@ bool IsInterestingChunk(u_map_fcc const& fcc)
void ChunkedFile::parseChunks()
{
uint8* ptr = GetData();
while (ptr < GetData() + GetDataSize())
// Make sure there's enough data to read u_map_fcc struct and the uint32 size after it
while (ptr <= GetData() + GetDataSize() - 8)
{
u_map_fcc header = *(u_map_fcc*)ptr;
if (IsInterestingChunk(header))