From 7c53fd1ca357a5f6d0dcb3fcc6d06a38de48cd09 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 7 Nov 2014 20:18:25 +1030 Subject: [PATCH] aoutx.h tidy Save a multiplication, and any concern that the buffer allocation might be smaller than the amount read (as it could be if the header size isn't a multiple of EXTERNAL_NLIST_SIZE). * aoutx.h (aout_get_external_symbols): Tidy allocation of symbol buffer. --- bfd/ChangeLog | 4 ++++ bfd/aoutx.h | 24 ++++++++++-------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 27edf4fbf1..a9c8c16acc 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,7 @@ +2014-11-07 Alan Modra + + * aoutx.h (aout_get_external_symbols): Tidy allocation of symbol buffer. + 2014-11-07 Alan Modra * archive.c (_bfd_slurp_extended_name_table): Revert bfd_get_size check. diff --git a/bfd/aoutx.h b/bfd/aoutx.h index bef59b4236..9385a98570 100644 --- a/bfd/aoutx.h +++ b/bfd/aoutx.h @@ -1300,14 +1300,14 @@ aout_get_external_symbols (bfd *abfd) { bfd_size_type count; struct external_nlist *syms; + bfd_size_type amt = exec_hdr (abfd)->a_syms; - count = exec_hdr (abfd)->a_syms / EXTERNAL_NLIST_SIZE; + count = amt / EXTERNAL_NLIST_SIZE; if (count == 0) return TRUE; /* Nothing to do. */ #ifdef USE_MMAP - if (! bfd_get_file_window (abfd, obj_sym_filepos (abfd), - exec_hdr (abfd)->a_syms, + if (! bfd_get_file_window (abfd, obj_sym_filepos (abfd), amt, &obj_aout_sym_window (abfd), TRUE)) return FALSE; syms = (struct external_nlist *) obj_aout_sym_window (abfd).data; @@ -1315,20 +1315,16 @@ aout_get_external_symbols (bfd *abfd) /* We allocate using malloc to make the values easy to free later on. If we put them on the objalloc it might not be possible to free them. */ - syms = (struct external_nlist *) bfd_malloc (count * EXTERNAL_NLIST_SIZE); + syms = (struct external_nlist *) bfd_malloc (amt); if (syms == NULL) return FALSE; - { - bfd_size_type amt; - amt = exec_hdr (abfd)->a_syms; - if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0 - || bfd_bread (syms, amt, abfd) != amt) - { - free (syms); - return FALSE; - } - } + if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0 + || bfd_bread (syms, amt, abfd) != amt) + { + free (syms); + return FALSE; + } #endif obj_aout_external_syms (abfd) = syms;