mirror of
https://github.com/TES3MP/TES3MP.git
synced 2025-09-24 05:00:31 -04: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:
commit
d3c865d909
@ -168,6 +168,14 @@ void BSAFile::readHeader()
|
|||||||
fs.setNameInfos(namesOffset, &mStringBuf);
|
fs.setNameInfos(namesOffset, &mStringBuf);
|
||||||
fs.hash = hashes[i];
|
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);
|
endOfNameBuffer = std::max(endOfNameBuffer, namesOffset + std::strlen(fs.name())+1);
|
||||||
assert(endOfNameBuffer <= mStringBuf.size());
|
assert(endOfNameBuffer <= mStringBuf.size());
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user