diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2005-05-24 13:53:30 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2005-05-24 13:53:30 +0000 |
commit | 391cb864cfe945be3f88dbfbd5cc252f13e96317 (patch) | |
tree | 1a0f236d2a7a2c660ed5432314276c35ef974abd /binutils/readelf.c | |
parent | cc1285c7485693e36034903140f52378e8d1f78a (diff) | |
download | gdb-391cb864cfe945be3f88dbfbd5cc252f13e96317.zip gdb-391cb864cfe945be3f88dbfbd5cc252f13e96317.tar.gz gdb-391cb864cfe945be3f88dbfbd5cc252f13e96317.tar.bz2 |
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.
Diffstat (limited to 'binutils/readelf.c')
-rw-r--r-- | binutils/readelf.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/binutils/readelf.c b/binutils/readelf.c index 5dafc51..ab0243e 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -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; } |