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 + + * elflint.c (check_gnu_hash): Return early when 2nd hash function + shift too big. + 2015-05-05 Mark Wielaard * 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