[compiler-rt] r257223 - [tsan] don't crash on closedir(0)

Kostya Serebryany via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 8 14:48:20 PST 2016


Author: kcc
Date: Fri Jan  8 16:48:19 2016
New Revision: 257223

URL: http://llvm.org/viewvc/llvm-project?rev=257223&view=rev
Log:
[tsan] don't crash on closedir(0)

Added:
    compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/closedir.c
Modified:
    compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc

Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc?rev=257223&r1=257222&r2=257223&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc Fri Jan  8 16:48:19 2016
@@ -1892,8 +1892,10 @@ TSAN_INTERCEPTOR(int, rmdir, char *path)
 
 TSAN_INTERCEPTOR(int, closedir, void *dirp) {
   SCOPED_TSAN_INTERCEPTOR(closedir, dirp);
-  int fd = dirfd(dirp);
-  FdClose(thr, pc, fd);
+  if (dirp) {
+    int fd = dirfd(dirp);
+    FdClose(thr, pc, fd);
+  }
   return REAL(closedir)(dirp);
 }
 

Added: compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/closedir.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/closedir.c?rev=257223&view=auto
==============================================================================
--- compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/closedir.c (added)
+++ compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/closedir.c Fri Jan  8 16:48:19 2016
@@ -0,0 +1,5 @@
+// Check that closedir(NULL) is ok.
+// RUN: %clang -O2 %s -o %t && %run %t
+#include <sys/types.h>
+#include <dirent.h>
+int main() { closedir(0); }




More information about the llvm-commits mailing list