diff options
author | Alan Modra <amodra@gmail.com> | 2023-02-20 11:14:59 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2023-02-20 11:21:36 +1030 |
commit | c50e4ced39b19ae49748634356c8c37e18427129 (patch) | |
tree | 9567519d0f1274e0712cac97dceb019b19dfa1b1 | |
parent | 9a7f501ec33c735acfc43346904a8a081666b637 (diff) | |
download | gdb-c50e4ced39b19ae49748634356c8c37e18427129.zip gdb-c50e4ced39b19ae49748634356c8c37e18427129.tar.gz gdb-c50e4ced39b19ae49748634356c8c37e18427129.tar.bz2 |
In-memory nested archives
alpha-linuxecoff has compressed archives that are decompressed to a
bfd-in-memory. We'd need to handle quite a lot of corner cases to
support nesting of such archives, so just stop it before we run into
segfaults later.
* opncls.c (_bfd_new_bfd_contained_in): Prohibit nested
archives in memory.
-rw-r--r-- | bfd/opncls.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/bfd/opncls.c b/bfd/opncls.c index eeac582..f0f4ed5 100644 --- a/bfd/opncls.c +++ b/bfd/opncls.c @@ -103,6 +103,12 @@ _bfd_new_bfd_contained_in (bfd *obfd) { bfd *nbfd; + /* Nested archives in bims are unsupported. */ + if ((obfd->flags & BFD_IN_MEMORY) != 0) + { + bfd_set_error (bfd_error_malformed_archive); + return NULL; + } nbfd = _bfd_new_bfd (); if (nbfd == NULL) return NULL; |