PR25822, Invalid read in process_symbol_table
PR 25822 * readelf.c (get_num_dynamic_syms): Don't set num_of_syms when reading buckets or chains fails.
This commit is contained in:
parent
b71d4fa7c3
commit
001890e1f9
|
@ -1,3 +1,9 @@
|
||||||
|
2020-04-15 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
PR 25822
|
||||||
|
* readelf.c (get_num_dynamic_syms): Don't set num_of_syms when
|
||||||
|
reading buckets or chains fails.
|
||||||
|
|
||||||
2020-04-15 Alan Modra <amodra@gmail.com>
|
2020-04-15 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* readelf.c (process_symbol_table): Zero gnubuckets, gnuchains
|
* readelf.c (process_symbol_table): Zero gnubuckets, gnuchains
|
||||||
|
|
|
@ -9969,11 +9969,13 @@ get_num_dynamic_syms (Filedata * filedata)
|
||||||
|
|
||||||
nbuckets = byte_get (nb, hash_ent_size);
|
nbuckets = byte_get (nb, hash_ent_size);
|
||||||
nchains = byte_get (nc, hash_ent_size);
|
nchains = byte_get (nc, hash_ent_size);
|
||||||
num_of_syms = nchains;
|
|
||||||
|
|
||||||
buckets = get_dynamic_data (filedata, nbuckets, hash_ent_size);
|
buckets = get_dynamic_data (filedata, nbuckets, hash_ent_size);
|
||||||
chains = get_dynamic_data (filedata, nchains, hash_ent_size);
|
chains = get_dynamic_data (filedata, nchains, hash_ent_size);
|
||||||
|
|
||||||
|
if (buckets != NULL && chains != NULL)
|
||||||
|
num_of_syms = nchains;
|
||||||
|
|
||||||
no_hash:
|
no_hash:
|
||||||
if (num_of_syms == 0)
|
if (num_of_syms == 0)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue