diff options
author | Nick Clifton <nickc@redhat.com> | 2015-01-27 11:30:15 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2015-01-27 11:30:15 +0000 |
commit | 37e3922eed415bbedd2dd6e46308fe9e03417770 (patch) | |
tree | 8abfb2fd6fcbe0fc85278e378abe890aca1553c1 /binutils/dlltool.c | |
parent | 20d79870f35f646e87c43d8c4fee936b4e0ed5a6 (diff) | |
download | gdb-37e3922eed415bbedd2dd6e46308fe9e03417770.zip gdb-37e3922eed415bbedd2dd6e46308fe9e03417770.tar.gz gdb-37e3922eed415bbedd2dd6e46308fe9e03417770.tar.bz2 |
Fix memory access violations triggered by running dlltool on corrupt binaries.
PR binutils/17512
* dlltool.c (identify_search_archive): If the last archive was the
same as the current archive, terminate the loop.
* pdp11.c (aout_get_external_symbols): Return false if there are
no symbols.
Diffstat (limited to 'binutils/dlltool.c')
-rw-r--r-- | binutils/dlltool.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/binutils/dlltool.c b/binutils/dlltool.c index dcc4651..b5b3aff 100644 --- a/binutils/dlltool.c +++ b/binutils/dlltool.c @@ -3589,7 +3589,15 @@ identify_search_archive (bfd * abfd, } if (last_arfile != NULL) - bfd_close (last_arfile); + { + bfd_close (last_arfile); + /* PR 17512: file: 8b2168d4. */ + if (last_arfile == arfile) + { + last_arfile = NULL; + break; + } + } last_arfile = arfile; } |