asan: readelf: heap buffer overflow in slurp_hppa_unwind_table
This one isn't just a weird corner case requiring multiple .PARISC.unwind sections in an object file to trigger the buffer overflow, it's also a simple bug that would prevent relocations being applied in the normal case of a single .PARISC.unwind section. * readelf (slurp_hppa_unwind_table): Set table_len before use in relocation sanity checks.
This commit is contained in:
parent
a6978338d9
commit
e3fdc001d3
2 changed files with 6 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
|||
2020-07-09 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* readelf (slurp_hppa_unwind_table): Set table_len before use
|
||||
in relocation sanity checks.
|
||||
|
||||
2020-07-07 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* testsuite/binutils-all/ar.exp: Use is_xcoff_format.
|
||||
|
|
|
@ -8253,6 +8253,7 @@ slurp_hppa_unwind_table (Filedata * filedata,
|
|||
nentries = size / unw_ent_size;
|
||||
size = unw_ent_size * nentries;
|
||||
|
||||
aux->table_len = nentries;
|
||||
tep = aux->table = (struct hppa_unw_table_entry *)
|
||||
xcmalloc (nentries, sizeof (aux->table[0]));
|
||||
|
||||
|
@ -8372,8 +8373,6 @@ slurp_hppa_unwind_table (Filedata * filedata,
|
|||
free (rela);
|
||||
}
|
||||
|
||||
aux->table_len = nentries;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue