[PATCH] D42909: Add new interceptor: lstat(2)
Phabricator via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 14 18:20:06 PST 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL325199: Add new interceptor: lstat(2) (authored by kamil, committed by ).
Herald added a subscriber: delcypher.
Changed prior to commit:
https://reviews.llvm.org/D42909?vs=132830&id=134353#toc
Repository:
rL LLVM
https://reviews.llvm.org/D42909
Files:
compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors.inc
compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h
compiler-rt/trunk/test/sanitizer_common/TestCases/NetBSD/lstat.cc
Index: compiler-rt/trunk/test/sanitizer_common/TestCases/NetBSD/lstat.cc
===================================================================
--- compiler-rt/trunk/test/sanitizer_common/TestCases/NetBSD/lstat.cc
+++ compiler-rt/trunk/test/sanitizer_common/TestCases/NetBSD/lstat.cc
@@ -0,0 +1,16 @@
+// RUN: %clangxx -O0 -g %s -o %t && %run %t
+
+#include <stdlib.h>
+#include <sys/stat.h>
+
+int main(void) {
+ struct stat st;
+
+ if (lstat("/dev/null", &st))
+ exit(1);
+
+ if (!S_ISCHR(st.st_mode))
+ exit(1);
+
+ return 0;
+}
Index: compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h
===================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h
@@ -406,6 +406,7 @@
#define SANITIZER_INTERCEPT_STAT \
(SI_FREEBSD || SI_MAC || SI_ANDROID || SI_NETBSD || SI_SOLARIS)
+#define SANITIZER_INTERCEPT_LSTAT SI_NETBSD
#define SANITIZER_INTERCEPT___XSTAT (!SANITIZER_INTERCEPT_STAT && SI_POSIX)
#define SANITIZER_INTERCEPT___XSTAT64 SI_LINUX_NOT_ANDROID
#define SANITIZER_INTERCEPT___LXSTAT SANITIZER_INTERCEPT___XSTAT
Index: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors.inc
===================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors.inc
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors.inc
@@ -92,6 +92,7 @@
#define localtime __locatime50
#define localtime_r __localtime_r50
#define mktime __mktime50
+#define lstat __lstat50
#define opendir __opendir30
#define readdir __readdir30
#define readdir_r __readdir_r30
@@ -6277,6 +6278,22 @@
#define INIT_STAT
#endif
+#if SANITIZER_INTERCEPT_LSTAT
+INTERCEPTOR(int, lstat, const char *path, void *buf) {
+ void *ctx;
+ COMMON_INTERCEPTOR_ENTER(ctx, lstat, path, buf);
+ if (common_flags()->intercept_stat)
+ COMMON_INTERCEPTOR_READ_STRING(ctx, path, 0);
+ int res = REAL(lstat)(path, buf);
+ if (!res)
+ COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, __sanitizer::struct_stat_sz);
+ return res;
+}
+#define INIT_LSTAT COMMON_INTERCEPT_FUNCTION(lstat)
+#else
+#define INIT_LSTAT
+#endif
+
#if SANITIZER_INTERCEPT___XSTAT
INTERCEPTOR(int, __xstat, int version, const char *path, void *buf) {
void *ctx;
@@ -6991,6 +7008,7 @@
INIT_SEND_SENDTO;
INIT_STAT;
INIT_EVENTFD_READ_WRITE;
+ INIT_LSTAT;
INIT___XSTAT;
INIT___XSTAT64;
INIT___LXSTAT;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D42909.134353.patch
Type: text/x-patch
Size: 2547 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180215/e65fdb5d/attachment.bin>
More information about the llvm-commits
mailing list