1
0
Fork 0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-12-23 18:19:43 +01:00

Set length to 0 if PHYSFS_fileLength() is negative

PHYSFS_fileLength() returns -1 if the file size can't be determined. I'm
going to set it to 0 instead, because it seems like that's more
well-behaved with consumers.

Take lodepng_decode24() or lodepng_decode32(), for example - from a
quick glance at the source, it only takes in a size_t (an unsigned
integer) for the filesize, and one of the first things it does is malloc
with the given filesize. If the -1 turns into SIZE_MAX and LodePNG
attempts to allocate that many bytes... well, I don't know of any
systems that have 18 exabytes of memory. So that seems pretty bad.
This commit is contained in:
Misa 2021-03-04 14:37:21 -08:00 committed by Ethan Lee
parent 888844cd3a
commit 5af570e75b

View file

@ -363,6 +363,10 @@ void FILESYSTEM_loadFileToMemory(
PHYSFS_sint64 length = PHYSFS_fileLength(handle); PHYSFS_sint64 length = PHYSFS_fileLength(handle);
if (len != NULL) if (len != NULL)
{ {
if (length < 0)
{
length = 0;
}
*len = length; *len = length;
} }
if (addnull) if (addnull)