Nothing good comes from trying to continue with a bogus hash function.
https://bugzilla.redhat.com/show_bug.cgi?id=1170810#c31
---
src/ChangeLog | 5 +++++
src/elflint.c | 7 +++++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/ChangeLog b/src/ChangeLog
index 7a44fc6..486f20f 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2015-05-06 Mark Wielaard <mjw(a)redhat.com>
+
+ * elflint.c (check_gnu_hash): Return early when 2nd hash function
+ shift too big.
+
2015-05-05 Mark Wielaard <mjw(a)redhat.com>
* nm.c (show_symbols): Handle dwarf_linesrc returning NULL.
diff --git a/src/elflint.c b/src/elflint.c
index a6f9b68..3abda71 100644
--- a/src/elflint.c
+++ b/src/elflint.c
@@ -2115,9 +2115,12 @@ section [%2d] '%s': hash table section is too small (is
%ld, expected at least %
}
if (shift > 31)
- ERROR (gettext ("\
+ {
+ ERROR (gettext ("\
section [%2d] '%s': 2nd hash function shift too big: %u\n"),
- idx, section_name (ebl, idx), shift);
+ idx, section_name (ebl, idx), shift);
+ return;
+ }
size_t maxidx = shdr->sh_size / sizeof (Elf32_Word) - (4 + bitmask_words
+ nbuckets);
--
2.1.0