Fix UB in hash-map.h
authorMarkus Trippelsdorf <markus@trippelsdorf.de>
Mon, 27 Nov 2017 12:53:16 +0000 (12:53 +0000)
committerMarkus Trippelsdorf <trippels@gcc.gnu.org>
Mon, 27 Nov 2017 12:53:16 +0000 (12:53 +0000)
bootstrap-ubsan shows:
  gcc/hash-map.h:277:19: runtime error: member access within null pointer of type 'struct hash_map'

Fix the issue by returning early.

From-SVN: r255166

gcc/ChangeLog
gcc/hash-map.h

index a7066fb7ad1969919d0274c08de78aa0a5033291..98e49cdb9c0fb7636228650144355fccd86b296b 100644 (file)
@@ -1,3 +1,7 @@
+2017-11-27  Markus Trippelsdorf  <markus@trippelsdorf.de>
+
+       * hash-map.h (gt_cleare_cache): Avoid UB.
+
 2017-11-27  Eric Botcazou  <ebotcazou@adacore.com>
 
        * cfgloop.h (struct loop): Document usage of USHRT_MAX for unroll.
index 6b8365a9d0a6bc066a7780b264a519fe2e47461b..10ae52d194add05d963b4d6b2a84c99db0e5038c 100644 (file)
@@ -274,7 +274,8 @@ template<typename K, typename V, typename H>
 static inline void
 gt_cleare_cache (hash_map<K, V, H> *h)
 {
-  gt_cleare_cache (&h->m_table);
+  if (h)
+    gt_cleare_cache (&h->m_table);
 }
 
 template<typename K, typename V, typename H>