ElfLoader: Don't scan for functions in zero-length sections

We end up scanning a crazy range from 0 to 0xFFFFFFFFC, which causes
problems.

Happens in WWE: Smackdown Vs Raw 2009 during initial load.
This commit is contained in:
Henrik Rydgård 2023-05-08 16:42:33 +02:00
parent 90ea4243e0
commit 0da82d3250

View file

@ -1412,6 +1412,10 @@ static PSPModule *__KernelLoadELFFromPtr(const u8 *ptr, size_t elfSize, u32 load
// Note: scan end is inclusive.
u32 end = start + reader.GetSectionSize(id) - 4;
u32 len = end + 4 - start;
if (len == 0) {
// Seen in WWE: Smackdown vs Raw 2009. See #17435.
continue;
}
if (!Memory::IsValidRange(start, len)) {
ERROR_LOG(LOADER, "Bad section %08x (len %08x) of section %d", start, len, id);
continue;