From f2172071e6b6f20a0401b68a70655930e40f6455 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 28 May 2025 22:29:45 +0930 Subject: [PATCH] elfedit: segv with --enable-x86-feature PR 33024 PR 33025 * elfedit.c (update_gnu_property): Sanity check program headers. --- binutils/elfedit.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/binutils/elfedit.c b/binutils/elfedit.c index 1178d8a2511..43c319f3cf4 100644 --- a/binutils/elfedit.c +++ b/binutils/elfedit.c @@ -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)); -- 2.47.2