elfedit: segv with --enable-x86-feature

PR 33024
	PR 33025
	* elfedit.c (update_gnu_property): Sanity check program headers.
This commit is contained in:
Alan Modra
2025-05-28 22:29:45 +09:30
parent ee623fdffd
commit f2172071e6

View File

@@ -105,7 +105,18 @@ update_gnu_property (const char *file_name, FILE *file)
if (map == MAP_FAILED)
{
error (_("%s: mmap () failed\n"), file_name);
return 0;
return 1;
}
if ((elf_header.e_ident[EI_CLASS] == ELFCLASS32
? sizeof (Elf32_External_Phdr)
: sizeof (Elf64_External_Phdr)) != elf_header.e_phentsize
|| elf_header.e_phoff > (size_t) st_buf.st_size
|| (elf_header.e_phnum * (size_t) elf_header.e_phentsize
> st_buf.st_size - elf_header.e_phoff))
{
error (_("%s: can't read program headers\n"), file_name);
return 1;
}
phdrs = xmalloc (elf_header.e_phnum * sizeof (*phdrs));