mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2024-12-23 10:09:43 +01:00
Some sanity checks for BinaryBlob header data
This commit is contained in:
parent
33fd589616
commit
06a71bab18
1 changed files with 18 additions and 5 deletions
|
@ -98,13 +98,26 @@ bool binaryBlob::unPackBinary(const char* name)
|
||||||
|
|
||||||
for (int i = 0; i < 128; i += 1)
|
for (int i = 0; i < 128; i += 1)
|
||||||
{
|
{
|
||||||
if (m_headers[i].valid)
|
/* Name can be stupid, just needs to be terminated */
|
||||||
|
m_headers[i].name[47] = '\0';
|
||||||
|
|
||||||
|
if (m_headers[i].valid & ~0x1)
|
||||||
{
|
{
|
||||||
PHYSFS_seek(handle, offset);
|
continue; /* Must be EXACTLY 1 */
|
||||||
m_memblocks[i] = (char*) malloc(m_headers[i].size);
|
|
||||||
PHYSFS_readBytes(handle, m_memblocks[i], m_headers[i].size);
|
|
||||||
offset += m_headers[i].size;
|
|
||||||
}
|
}
|
||||||
|
if ((offset + m_headers[i].size) > size)
|
||||||
|
{
|
||||||
|
continue; /* Bogus size value */
|
||||||
|
}
|
||||||
|
|
||||||
|
PHYSFS_seek(handle, offset);
|
||||||
|
m_memblocks[i] = (char*) malloc(m_headers[i].size);
|
||||||
|
if (m_memblocks[i] == NULL)
|
||||||
|
{
|
||||||
|
exit(1); /* Oh god we're out of memory, just bail */
|
||||||
|
}
|
||||||
|
PHYSFS_readBytes(handle, m_memblocks[i], m_headers[i].size);
|
||||||
|
offset += m_headers[i].size;
|
||||||
}
|
}
|
||||||
PHYSFS_close(handle);
|
PHYSFS_close(handle);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue