From 1f88d0c87c37d3a15fa6376335e8b0d1c79d85aa Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Thu, 4 Oct 2018 22:43:27 -0400 Subject: [PATCH] Fix undefined behavior, don't pass NULL to fwrite If a vector that we try to write using file_write is empty, we may end up passing NULL to fwrite, which triggers UBSan: .../gdb/dwarf-index-write.c:73:14: runtime error: null pointer passed as argument 1, which is declared to never be null Avoid it by skipping the write if the vector is empty. gdb/ChangeLog: * dwarf-index-write.c (file_write): Don't write if the vector is empty. --- gdb/ChangeLog | 5 +++++ gdb/dwarf-index-write.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 126deb7..0e5a3f4 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2018-10-04 Simon Marchi + + * dwarf-index-write.c (file_write): Don't write if the vector is + empty. + 2018-10-05 Tom de Vries * python/py-progspace.c (pspy_solib_name): Fix type mismatch in diff --git a/gdb/dwarf-index-write.c b/gdb/dwarf-index-write.c index 2520321..d4585af 100644 --- a/gdb/dwarf-index-write.c +++ b/gdb/dwarf-index-write.c @@ -80,7 +80,8 @@ template static void file_write (FILE *file, const std::vector &vec) { - file_write (file, vec.data (), vec.size () * sizeof (vec[0])); + if (!vec.empty ()) + file_write (file, vec.data (), vec.size () * sizeof (vec[0])); } /* In-memory buffer to prepare data to be written later to a file. */ -- 2.7.4