aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@linux-m68k.org>2009-01-27 16:37:10 +0000
committerAndreas Schwab <schwab@linux-m68k.org>2009-01-27 16:37:10 +0000
commit27cc28f94b69c07ac6c4b1834c2e65538dbbcc3a (patch)
treeadc5ea2e72ea4f231e7ddf83f4953f6580822be0 /bfd
parent1b0adfe09ccf94ad63361691d2e9e81b22896267 (diff)
downloadgdb-27cc28f94b69c07ac6c4b1834c2e65538dbbcc3a.zip
gdb-27cc28f94b69c07ac6c4b1834c2e65538dbbcc3a.tar.gz
gdb-27cc28f94b69c07ac6c4b1834c2e65538dbbcc3a.tar.bz2
* mach-o.c (bfd_mach_o_archive_p): Restrict the number of
architectures in the archive.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/mach-o.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 41cee38..f6102d5 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2009-01-27 Andreas Schwab <schwab@suse.de>
+
+ * mach-o.c (bfd_mach_o_archive_p): Restrict the number of
+ architectures in the archive.
+
2009-01-27 Hans-Peter Nilsson <hp@axis.com>
* elf32-cris.c (cris_elf_relocate_section) <case R_CRIS_16_DTPREL>
diff --git a/bfd/mach-o.c b/bfd/mach-o.c
index 9ae1bba..e0a6fa4 100644
--- a/bfd/mach-o.c
+++ b/bfd/mach-o.c
@@ -2098,6 +2098,11 @@ bfd_mach_o_archive_p (bfd *abfd)
adata->nfat_arch = bfd_getb32 (buf + 4);
if (adata->magic != 0xcafebabe)
goto error;
+ /* Avoid matching Java bytecode files, which have the same magic number.
+ In the Java bytecode file format this field contains the JVM version,
+ which starts at 43.0. */
+ if (adata->nfat_arch > 30)
+ goto error;
adata->archentries =
bfd_alloc (abfd, adata->nfat_arch * sizeof (mach_o_fat_archentry));