mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-29 02:20:51 +00:00
Fix a memory exhaustion bug when attempting to allocate room for an impossible number of program headers.
* elfcode.h (elf_object_p): Check for corrupt input files with more program headers than can actually fit in the file.
This commit is contained in:
@@ -784,6 +784,11 @@ elf_object_p (bfd *abfd)
|
||||
if (i_ehdrp->e_phnum > ((bfd_size_type) -1) / sizeof (*i_phdr))
|
||||
goto got_wrong_format_error;
|
||||
#endif
|
||||
/* Check for a corrupt input file with an impossibly large number
|
||||
of program headers. */
|
||||
if (bfd_get_file_size (abfd) > 0
|
||||
&& i_ehdrp->e_phnum > bfd_get_file_size (abfd))
|
||||
goto got_no_match;
|
||||
amt = (bfd_size_type) i_ehdrp->e_phnum * sizeof (*i_phdr);
|
||||
elf_tdata (abfd)->phdr = (Elf_Internal_Phdr *) bfd_alloc (abfd, amt);
|
||||
if (elf_tdata (abfd)->phdr == NULL)
|
||||
|
||||
Reference in New Issue
Block a user