objdump disassembly of files without symbols

ubsan complains about memcpy with a NULL src even when size is zero.

	* objdump.c (disassemble_section): Don't call qsort unless
	sym count is at least two.
	(disassemble_data): Don't call memcpy with NULL src.
This commit is contained in:
Alan Modra 2020-03-10 13:22:25 +10:30
parent 6b5e16ffd3
commit 41da082238
2 changed files with 14 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2020-03-10 Alan Modra <amodra@gmail.com>
* objdump.c (disassemble_section): Don't call qsort unless
sym count is at least two.
(disassemble_data): Don't call memcpy with NULL src.
2020-03-09 Alan Modra <amodra@gmail.com>
PR 25645

View File

@ -3109,7 +3109,8 @@ disassemble_section (bfd *abfd, asection *section, void *inf)
/* Sort the symbols into value and section order. */
compare_section = section;
qsort (sorted_syms, sorted_symcount, sizeof (asymbol *), compare_symbols);
if (sorted_symcount > 1)
qsort (sorted_syms, sorted_symcount, sizeof (asymbol *), compare_symbols);
/* Skip over the relocs belonging to addresses below the
start address. */
@ -3376,10 +3377,13 @@ disassemble_data (bfd *abfd)
sorted_symcount = symcount ? symcount : dynsymcount;
sorted_syms = (asymbol **) xmalloc ((sorted_symcount + synthcount)
* sizeof (asymbol *));
memcpy (sorted_syms, symcount ? syms : dynsyms,
sorted_symcount * sizeof (asymbol *));
if (sorted_symcount != 0)
{
memcpy (sorted_syms, symcount ? syms : dynsyms,
sorted_symcount * sizeof (asymbol *));
sorted_symcount = remove_useless_symbols (sorted_syms, sorted_symcount);
sorted_symcount = remove_useless_symbols (sorted_syms, sorted_symcount);
}
for (i = 0; i < synthcount; ++i)
{