diff --git a/binutils/ChangeLog b/binutils/ChangeLog index a30d38d4ae..9cac7a2a4e 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2020-04-15 Alan Modra + + 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 * readelf.c (process_symbol_table): Zero gnubuckets, gnuchains diff --git a/binutils/readelf.c b/binutils/readelf.c index 80af9a242a..0ea8273ab1 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -9969,11 +9969,13 @@ get_num_dynamic_syms (Filedata * filedata) nbuckets = byte_get (nb, hash_ent_size); nchains = byte_get (nc, hash_ent_size); - num_of_syms = nchains; buckets = get_dynamic_data (filedata, nbuckets, hash_ent_size); chains = get_dynamic_data (filedata, nchains, hash_ent_size); + if (buckets != NULL && chains != NULL) + num_of_syms = nchains; + no_hash: if (num_of_syms == 0) {