elflint: Stop checking section when 2nd hash function shift too big.
authorMark Wielaard <mjw@redhat.com>
Wed, 6 May 2015 11:09:23 +0000 (13:09 +0200)
committerMark Wielaard <mjw@redhat.com>
Tue, 12 May 2015 14:45:51 +0000 (16:45 +0200)
Nothing good comes from trying to continue with a bogus hash function.

https://bugzilla.redhat.com/show_bug.cgi?id=1170810#c31

src/ChangeLog
src/elflint.c

index 7a44fc6..486f20f 100644 (file)
@@ -1,3 +1,8 @@
+2015-05-06  Mark Wielaard  <mjw@redhat.com>
+
+       * elflint.c (check_gnu_hash): Return early when 2nd hash function
+       shift too big.
+
 2015-05-05  Mark Wielaard  <mjw@redhat.com>
 
        * nm.c (show_symbols): Handle dwarf_linesrc returning NULL.
index a6f9b68..3abda71 100644 (file)
@@ -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);