+2005-05-24 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (process_section_groups): Report group section
+ index. Check if the section member index is valid.
+
2005-05-23 Fred Fish <fnf@specifixinc.com>
* addr2line.c (unwind_inlines): New flag for 'i' option.
if (do_section_groups)
{
- printf ("\n%s group section `%s' [%s] contains %u sections:\n",
- get_group_flags (entry), name, group_name, size);
+ printf ("\n%s group section [%5u] `%s' [%s] contains %u sections:\n",
+ get_group_flags (entry), i, name, group_name, size);
printf (_(" [Index] Name\n"));
}
entry = byte_get (indices, 4);
indices += 4;
+ if (entry >= elf_header.e_shnum)
+ {
+ error (_("section [%5u] in group section [%5u] > maximum section [%5u]\n"),
+ entry, i, elf_header.e_shnum - 1);
+ continue;
+ }
+ else if (entry >= SHN_LORESERVE && entry <= SHN_HIRESERVE)
+ {
+ error (_("invalid section [%5u] in group section [%5u]\n"),
+ entry, i);
+ continue;
+ }
+
if (section_headers_groups [SECTION_HEADER_INDEX (entry)]
!= NULL)
{
if (entry)
{
- error (_("section [%5u] already in group section [%5u]\n"),
- entry,
+ error (_("section [%5u] in group section [%5u] already in group section [%5u]\n"),
+ entry, i,
section_headers_groups [SECTION_HEADER_INDEX (entry)]->group_index);
continue;
}