aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2008-11-12 22:04:04 +0000
committerAlan Modra <amodra@gmail.com>2008-11-12 22:04:04 +0000
commit3337c1e561574b6f203e17c038cb0334666cf27a (patch)
tree13a752af296a3ce461ea0cc50427802abc16a4f9
parent09c6f846b63041b8161c0d4339ac1ddef11ea290 (diff)
downloadgdb-3337c1e561574b6f203e17c038cb0334666cf27a.zip
gdb-3337c1e561574b6f203e17c038cb0334666cf27a.tar.gz
gdb-3337c1e561574b6f203e17c038cb0334666cf27a.tar.bz2
PR 7023
* elf.c (bfd_section_from_shdr <SHT_SYMTAB>): Fail on invalid sh_info.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf.c2
2 files changed, 7 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 0452dbb..3d5c022 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2008-11-13 Alan Modra <amodra@bigpond.net.au>
+
+ PR 7023
+ * elf.c (bfd_section_from_shdr <SHT_SYMTAB>): Fail on invalid sh_info.
+
2008-11-12 Tristan Gingold <gingold@adacore.com>
* bfd.c (bfd_get_sign_extend_vma): Return 0 for mach-o.
diff --git a/bfd/elf.c b/bfd/elf.c
index 054fd2a..cb7d2fc 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -1608,6 +1608,8 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
if (hdr->sh_entsize != bed->s->sizeof_sym)
return FALSE;
+ if (hdr->sh_info * hdr->sh_entsize > hdr->sh_size)
+ return FALSE;
BFD_ASSERT (elf_onesymtab (abfd) == 0);
elf_onesymtab (abfd) = shindex;
elf_tdata (abfd)->symtab_hdr = *hdr;