This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] elflint: Stop checking section when 2nd hash function shift too big.


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@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.
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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]