Merge pull request #4466 from Sonicadvance1/sanitize_programheader_size

ELFParser: Sanity check ELF program headers
This commit is contained in:
LC authored and GitHub committed 2025-03-30 12:23:16 -04:00
commit b145e894e4
1 file changed
+9 -1
@@ -45,7 +45,9 @@ struct ELFParser {
}
// Reset to beginning
lseek(fd, 0, SEEK_SET);
if (lseek(fd, 0, SEEK_SET) == -1) {
return false;
}
uint8_t header[5];
if (pread(fd, header, sizeof(header), 0) == -1) {
@@ -146,6 +148,12 @@ struct ELFParser {
return false;
}
// sanity check program header offset size.
if (ehdr.e_phoff > Size || (ehdr.e_phentsize * ehdr.e_phnum) > (Size - ehdr.e_phoff)) {
LogMan::Msg::EFmt("Program headers exceeds size of program");
return false;
}
if (type == ::ELFLoader::ELFContainer::TYPE_X86_32) {
fextl::vector<Elf32_Phdr> phdrs32(ehdr.e_phnum);