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.
This commit is contained in:
parent
67be31e5aa
commit
7c53fd1ca3
2 changed files with 14 additions and 14 deletions
|
@ -1,3 +1,7 @@
|
|||
2014-11-07 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* aoutx.h (aout_get_external_symbols): Tidy allocation of symbol buffer.
|
||||
|
||||
2014-11-07 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* archive.c (_bfd_slurp_extended_name_table): Revert bfd_get_size check.
|
||||
|
|
24
bfd/aoutx.h
24
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;
|
||||
|
|
Loading…
Reference in a new issue