[UB] Fix yet another use of memcpy with a null pointer argument. I think
authorChandler Carruth <chandlerc@gmail.com>
Tue, 4 Aug 2015 01:00:56 +0000 (01:00 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Tue, 4 Aug 2015 01:00:56 +0000 (01:00 +0000)
this is the last of them in my build of LLVM. Haven't tried Clang yet.

Found via UBSan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243934 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/MemoryBuffer.cpp

index 98862e96b74923bb930f741d7a9074db8582cdcf..d09ef3a4c0bc595cd0dd95265cb89819f11057fb 100644 (file)
@@ -57,7 +57,8 @@ void MemoryBuffer::init(const char *BufStart, const char *BufEnd,
 /// CopyStringRef - Copies contents of a StringRef into a block of memory and
 /// null-terminates it.
 static void CopyStringRef(char *Memory, StringRef Data) {
 /// CopyStringRef - Copies contents of a StringRef into a block of memory and
 /// null-terminates it.
 static void CopyStringRef(char *Memory, StringRef Data) {
-  memcpy(Memory, Data.data(), Data.size());
+  if (!Data.empty())
+    memcpy(Memory, Data.data(), Data.size());
   Memory[Data.size()] = 0; // Null terminate string.
 }
 
   Memory[Data.size()] = 0; // Null terminate string.
 }