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.
This commit is contained in:
H.J. Lu 2005-05-24 13:53:30 +00:00
parent cc1285c748
commit 391cb864cf
2 changed files with 22 additions and 4 deletions

View File

@ -1,3 +1,8 @@
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.

View File

@ -4187,8 +4187,8 @@ process_section_groups (FILE *file)
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"));
}
@ -4202,13 +4202,26 @@ process_section_groups (FILE *file)
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;
}