[msan] Allow zero buf pointer in getcwd() interceptor.
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Tue, 12 Feb 2013 14:36:22 +0000 (14:36 +0000)
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Tue, 12 Feb 2013 14:36:22 +0000 (14:36 +0000)
llvm-svn: 174970

compiler-rt/lib/msan/msan_interceptors.cc
compiler-rt/lib/msan/tests/msan_test.cc

index 635bff1..7c8e1c2 100644 (file)
@@ -543,7 +543,7 @@ INTERCEPTOR(char *, getcwd, char *buf, SIZE_T size) {
   ENSURE_MSAN_INITED();
   char *res = REAL(getcwd)(buf, size);
   if (res)
-    __msan_unpoison(buf, REAL(strlen)(buf) + 1);
+    __msan_unpoison(res, REAL(strlen)(res) + 1);
   return res;
 }
 
index a094360..7fa6cd2 100644 (file)
@@ -605,6 +605,13 @@ TEST(MemorySanitizer, getcwd) {
   EXPECT_NOT_POISONED(path[0]);
 }
 
+TEST(MemorySanitizer, getcwd_gnu) {
+  char* res = getcwd(NULL, 0);
+  assert(res);
+  EXPECT_NOT_POISONED(res[0]);
+  free(res);
+}
+
 TEST(MemorySanitizer, realpath) {
   const char* relpath = ".";
   char path[PATH_MAX + 1];