PR22216, infinite loop in readelf process_symbol_table
authorAlan Modra <amodra@gmail.com>
Wed, 27 Sep 2017 05:44:00 +0000 (15:14 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 27 Sep 2017 06:24:18 +0000 (15:54 +0930)
commit6bd6a03d6975a96802b37741a99644570e52a72b
tree50db676ae71b1bf684cba370532f78869455d0bf
parentcd28e7aaf35f7de5033ecd619b56064136bb190b
PR22216, infinite loop in readelf process_symbol_table

This should make readelf bombproof given a fuzzed DT_HASH.  Also
removes a bogus check that would have resulted in wrong histograms.

PR 22216
* readelf.c (process_symbol_table): Check that DT_HASH symbol
chains are only visited once, and report an error if not.  Display
invalid symbol index if chain is out of range.  Use the same logic
when calculating histograms rather than the PR 17531 fix.  Delete
bogus check that chained index is less than number of buckets.
binutils/ChangeLog
binutils/readelf.c