1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-02-21 17:39:40 +00:00

Merge branch 'fix_bsa' into 'master'

Add some validation for bsa parsing

Closes #5955

See merge request OpenMW/openmw!750
This commit is contained in:
psi29a 2021-04-16 19:53:02 +00:00
commit d3c865d909

View file

@ -168,6 +168,14 @@ void BSAFile::readHeader()
fs.setNameInfos(namesOffset, &mStringBuf);
fs.hash = hashes[i];
if (namesOffset >= mStringBuf.size()) {
fail("Archive contains names offset outside itself");
}
const void* end = std::memchr(fs.name(), '\0', mStringBuf.size()-namesOffset);
if (!end) {
fail("Archive contains non-zero terminated string");
}
endOfNameBuffer = std::max(endOfNameBuffer, namesOffset + std::strlen(fs.name())+1);
assert(endOfNameBuffer <= mStringBuf.size());