PR26410, UBSAN: symbols.c:1818
authorAlan Modra <amodra@gmail.com>
Tue, 25 Aug 2020 05:21:21 +0000 (14:51 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 25 Aug 2020 13:37:10 +0000 (23:07 +0930)
Don't memset(0,0,0).

PR 26410
* symbols.c (dollar_label_count, dollar_label_max): Make size_t.
(dollar_label_clear): Don't call memset with NULL pointer.

gas/ChangeLog
gas/symbols.c

index f8d049bb8d40dc579e6d981070b319f534a07669..ce58416c4a37c697dd91168e350b8a99cecf432d 100644 (file)
@@ -1,3 +1,9 @@
+2020-08-25  Alan Modra  <amodra@gmail.com>
+
+       PR 26410
+       * symbols.c (dollar_label_count, dollar_label_max): Make size_t.
+       (dollar_label_clear): Don't call memset with NULL pointer.
+
 2020-08-25  Alan Modra  <amodra@gmail.com>
 
        * config/tc-arc.c (declare_register_set): Avoid false positive
index 04017b6744f3c8d901967ab13fa29eeaa431e5b4..67ac801295875512fc3c214fa9f3d349146b881b 100644 (file)
@@ -1761,8 +1761,8 @@ snapshot_symbol (symbolS **symbolPP, valueT *valueP, segT *segP, fragS **fragPP)
 static long *dollar_labels;
 static long *dollar_label_instances;
 static char *dollar_label_defines;
-static unsigned long dollar_label_count;
-static unsigned long dollar_label_max;
+static size_t dollar_label_count;
+static size_t dollar_label_max;
 
 int
 dollar_label_defined (long label)
@@ -1798,7 +1798,8 @@ dollar_label_instance (long label)
 void
 dollar_label_clear (void)
 {
-  memset (dollar_label_defines, '\0', (unsigned int) dollar_label_count);
+  if (dollar_label_count)
+    memset (dollar_label_defines, '\0', dollar_label_count);
 }
 
 #define DOLLAR_LABEL_BUMP_BY 10