diff options
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/aoutx.h | 16 |
2 files changed, 18 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index fc32759..8de43e0 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2016-12-01 Nick Clifton <nickc@redhat.com> + + PR binutils/20891 + * aoutx.h (find_nearest_line): Handle the case where the main file + name and the directory name are both empty. + 2016-11-30 Alan Modra <amodra@gmail.com> * elf.c (get_program_header_size): Revert accidental change. diff --git a/bfd/aoutx.h b/bfd/aoutx.h index 089fe57..614da21 100644 --- a/bfd/aoutx.h +++ b/bfd/aoutx.h @@ -2666,7 +2666,7 @@ NAME (aout, find_nearest_line) (bfd *abfd, char *buf; *filename_ptr = abfd->filename; - *functionname_ptr = 0; + *functionname_ptr = NULL; *line_ptr = 0; if (disriminator_ptr) *disriminator_ptr = 0; @@ -2811,9 +2811,17 @@ NAME (aout, find_nearest_line) (bfd *abfd, *filename_ptr = main_file_name; else { - sprintf (buf, "%s%s", directory_name, main_file_name); - *filename_ptr = buf; - buf += filelen + 1; + if (buf == NULL) + /* PR binutils/20891: In a corrupt input file both + main_file_name and directory_name can be empty... */ + * filename_ptr = NULL; + else + { + snprintf (buf, filelen + 1, "%s%s", directory_name, + main_file_name); + *filename_ptr = buf; + buf += filelen + 1; + } } } |