From e82ab856bb4689330c29fb9f1c57a8555b26380e Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 1 Dec 2016 10:49:39 +0000 Subject: [PATCH] Fix a seg-fault disassembling a corrupt binary. PR binutils/20892 * aoutx.h (find_nearest_line): Handle the case where the function name is empty. --- bfd/ChangeLog | 4 ++++ bfd/aoutx.h | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 8de43e032c2..f03aaeb8ed2 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -4,6 +4,10 @@ * aoutx.h (find_nearest_line): Handle the case where the main file name and the directory name are both empty. + PR binutils/20892 + * aoutx.h (find_nearest_line): Handle the case where the function + name is empty. + 2016-11-30 Alan Modra * elf.c (get_program_header_size): Revert accidental change. diff --git a/bfd/aoutx.h b/bfd/aoutx.h index 614da21a771..4308679207d 100644 --- a/bfd/aoutx.h +++ b/bfd/aoutx.h @@ -2830,6 +2830,12 @@ NAME (aout, find_nearest_line) (bfd *abfd, const char *function = func->name; char *colon; + if (buf == NULL) + { + /* PR binutils/20892: In a corrupt input file func can be empty. */ + * functionname_ptr = NULL; + return TRUE; + } /* The caller expects a symbol name. We actually have a function name, without the leading underscore. Put the underscore back in, so that the caller gets a symbol name. */ -- 2.30.2