PR25900, RISC-V: null pointer dereference

PR 25900
	* elfnn-riscv.c (_bfd_riscv_relax_section): Check root.type before
	accessing root.u.def of symbols.  Also check root.u.def.section
	is non-NULL.  Reverse tests so as to make the logic positive.
This commit is contained in:
Alan Modra
2020-05-01 15:32:00 +09:30
parent 6083233224
commit a2714d6cca
2 changed files with 13 additions and 5 deletions

View File

@ -1,3 +1,10 @@
2020-05-01 Alan Modra <amodra@gmail.com>
PR 25900
* elfnn-riscv.c (_bfd_riscv_relax_section): Check root.type before
accessing root.u.def of symbols. Also check root.u.def.section
is non-NULL. Reverse tests so as to make the logic positive.
2020-05-01 Alan Modra <amodra@gmail.com> 2020-05-01 Alan Modra <amodra@gmail.com>
PR 25882 PR 25882

View File

@ -4161,15 +4161,16 @@ _bfd_riscv_relax_section (bfd *abfd, asection *sec,
symval = 0; symval = 0;
sym_sec = bfd_und_section_ptr; sym_sec = bfd_und_section_ptr;
} }
else if (h->root.u.def.section->output_section == NULL else if ((h->root.type == bfd_link_hash_defined
|| (h->root.type != bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak)
&& h->root.type != bfd_link_hash_defweak)) && h->root.u.def.section != NULL
continue; && h->root.u.def.section->output_section != NULL)
else
{ {
symval = h->root.u.def.value; symval = h->root.u.def.value;
sym_sec = h->root.u.def.section; sym_sec = h->root.u.def.section;
} }
else
continue;
if (h->type != STT_FUNC) if (h->type != STT_FUNC)
reserve_size = reserve_size =