public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* PR29170, divide by zero displaying fuzzed .debug_names
@ 2022-05-24  4:18 Alan Modra
  0 siblings, 0 replies; only message in thread
From: Alan Modra @ 2022-05-24  4:18 UTC (permalink / raw)
  To: binutils

	PR 29170
	* dwarf.c (display_debug_names): Don't attempt to display bucket
	clashes when bucket count is zero.

diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index c855972a12f..d820c21527f 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -10149,32 +10149,35 @@ display_debug_names (struct dwarf_section *section, void *file)
 			bucket_count),
 	      buckets_filled, (unsigned long) bucket_count);
 
-      uint32_t hash_prev = 0;
-      size_t hash_clash_count = 0;
-      size_t longest_clash = 0;
-      size_t this_length = 0;
-      size_t hashi;
-      for (hashi = 0; hashi < name_count; hashi++)
-	{
-	  const uint32_t hash_this = hash_table_hashes[hashi];
-
-	  if (hashi > 0)
+      if (bucket_count != 0)
+	{
+	  uint32_t hash_prev = 0;
+	  size_t hash_clash_count = 0;
+	  size_t longest_clash = 0;
+	  size_t this_length = 0;
+	  size_t hashi;
+	  for (hashi = 0; hashi < name_count; hashi++)
 	    {
-	      if (hash_prev % bucket_count == hash_this % bucket_count)
+	      const uint32_t hash_this = hash_table_hashes[hashi];
+
+	      if (hashi > 0)
 		{
-		  ++hash_clash_count;
-		  ++this_length;
-		  longest_clash = MAX (longest_clash, this_length);
+		  if (hash_prev % bucket_count == hash_this % bucket_count)
+		    {
+		      ++hash_clash_count;
+		      ++this_length;
+		      longest_clash = MAX (longest_clash, this_length);
+		    }
+		  else
+		    this_length = 0;
 		}
-	      else
-		this_length = 0;
+	      hash_prev = hash_this;
 	    }
-	  hash_prev = hash_this;
+	  printf (_("Out of %lu items there are %zu bucket clashes"
+		    " (longest of %zu entries).\n"),
+		  (unsigned long) name_count, hash_clash_count, longest_clash);
+	  assert (name_count == buckets_filled + hash_clash_count);
 	}
-      printf (_("Out of %lu items there are %zu bucket clashes"
-		" (longest of %zu entries).\n"),
-	      (unsigned long) name_count, hash_clash_count, longest_clash);
-      assert (name_count == buckets_filled + hash_clash_count);
 
       struct abbrev_lookup_entry
       {

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-05-24  4:18 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-24  4:18 PR29170, divide by zero displaying fuzzed .debug_names Alan Modra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).