Make map_program_segments tend to call abort rather than trash the
authorIan Lance Taylor <ian@airs.com>
Thu, 19 May 1994 21:58:45 +0000 (21:58 +0000)
committerIan Lance Taylor <ian@airs.com>
Thu, 19 May 1994 21:58:45 +0000 (21:58 +0000)
stack in unhandled cases.  Still covered by previous ChangeLog entry.

bfd/elfcode.h

index 62114bbfa4e49ce37b550316d14b1d459d006c26..bdedb487e69ccf2d9fc1dfdeb9069b9c62ce1a4e 100644 (file)
@@ -1824,7 +1824,7 @@ map_program_segments (abfd, off, first, phdr_size)
      Elf_Internal_Shdr *first;
      bfd_size_type phdr_size;
 {
-  Elf_Internal_Phdr phdrs[5];
+  Elf_Internal_Phdr phdrs[10];
   unsigned int phdr_count;
   Elf_Internal_Phdr *phdr;
   int phdr_size_adjust;
@@ -1835,6 +1835,8 @@ map_program_segments (abfd, off, first, phdr_size)
   Elf_Internal_Ehdr *i_ehdrp;
 
   BFD_ASSERT ((abfd->flags & EXEC_P) != 0);
+  BFD_ASSERT (phdr_size / sizeof (Elf_Internal_Phdr)
+             <= sizeof phdrs / sizeof (phdrs[0]));
 
   phdr_count = 0;
   phdr = phdrs;
@@ -1996,10 +1998,6 @@ map_program_segments (abfd, off, first, phdr_size)
       ++phdr_count;
     }
 
-  /* Make sure we didn't run off our array.  */
-  if (phdr_count > sizeof (phdrs) / sizeof (phdr[0]))
-    abort ();
-
   /* Make sure the return value from get_program_header_size matches
      what we computed here.  */
   if (phdr_count != phdr_size / sizeof (Elf_Internal_Phdr))