diff options
author | Jakub Jelinek <jakub@redhat.com> | 2005-06-14 11:04:22 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2005-06-14 11:04:22 +0000 |
commit | 933d961a3c097d7cb4864314df714abacc9b234e (patch) | |
tree | 3bf6884f1ce34075ad32569a4ee5f0d8b755f674 /bfd/archive.c | |
parent | 58b9a773e18e18e7ff086f6f6ff36837d0cc9537 (diff) | |
download | gdb-933d961a3c097d7cb4864314df714abacc9b234e.zip gdb-933d961a3c097d7cb4864314df714abacc9b234e.tar.gz gdb-933d961a3c097d7cb4864314df714abacc9b234e.tar.bz2 |
* elf.c (bfd_section_from_shdr): Fail if name is NULL.
Prevent endless recursion on broken objects.
* archive.c (do_slurp_coff_armap): Check for overflows.
Diffstat (limited to 'bfd/archive.c')
-rw-r--r-- | bfd/archive.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/bfd/archive.c b/bfd/archive.c index 7dfe6b6..ce6a332 100644 --- a/bfd/archive.c +++ b/bfd/archive.c @@ -821,9 +821,15 @@ do_slurp_coff_armap (bfd *abfd) /* The coff armap must be read sequentially. So we construct a bsd-style one in core all at once, for simplicity. */ + if (nsymz > ~ (bfd_size_type) 0 / sizeof (carsym)) + return FALSE; + carsym_size = (nsymz * sizeof (carsym)); ptrsize = (4 * nsymz); + if (carsym_size + stringsize + 1 <= carsym_size) + return FALSE; + ardata->symdefs = bfd_zalloc (abfd, carsym_size + stringsize + 1); if (ardata->symdefs == NULL) return FALSE; |