[compiler-rt] fa7c01e - [Sanitizers] intercept fparseln on freebsd

David Carlier via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 14 11:14:38 PDT 2021


Author: David Carlier
Date: 2021-09-14T19:13:45+01:00
New Revision: fa7c01e5784b7564a94029ca60dd3f9a8ca825b6

URL: https://github.com/llvm/llvm-project/commit/fa7c01e5784b7564a94029ca60dd3f9a8ca825b6
DIFF: https://github.com/llvm/llvm-project/commit/fa7c01e5784b7564a94029ca60dd3f9a8ca825b6.diff

LOG: [Sanitizers] intercept fparseln on freebsd

Reviewed By: vitalybuka, emaste

Differential Revision: https://reviews.llvm.org/D109753

Added: 
    compiler-rt/test/sanitizer_common/TestCases/FreeBSD/fparseln.cpp

Modified: 
    compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
index eca20a91f264d..ee683da3edc81 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
@@ -540,7 +540,7 @@
 #define SANITIZER_INTERCEPT_MODCTL SI_NETBSD
 #define SANITIZER_INTERCEPT_CAPSICUM SI_FREEBSD
 #define SANITIZER_INTERCEPT_STRTONUM (SI_NETBSD || SI_FREEBSD)
-#define SANITIZER_INTERCEPT_FPARSELN SI_NETBSD
+#define SANITIZER_INTERCEPT_FPARSELN (SI_NETBSD || SI_FREEBSD)
 #define SANITIZER_INTERCEPT_STATVFS1 SI_NETBSD
 #define SANITIZER_INTERCEPT_STRTOI SI_NETBSD
 #define SANITIZER_INTERCEPT_CAPSICUM SI_FREEBSD

diff  --git a/compiler-rt/test/sanitizer_common/TestCases/FreeBSD/fparseln.cpp b/compiler-rt/test/sanitizer_common/TestCases/FreeBSD/fparseln.cpp
new file mode 100644
index 0000000000000..f805f3159ab15
--- /dev/null
+++ b/compiler-rt/test/sanitizer_common/TestCases/FreeBSD/fparseln.cpp
@@ -0,0 +1,26 @@
+// RUN: %clangxx -O0 -g %s -o %t -lutil && %run %t 2>&1 | FileCheck %s
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <libutil.h>
+
+int main(void) {
+  printf("fparseln\n");
+
+  FILE *fp = fopen("/etc/fstab", "r");
+  assert(fp);
+
+  int flags = FPARSELN_UNESCALL;
+  const char *delim = "\\\\#";
+  size_t lineno = 0, len;
+  char *line;
+  while ((line = fparseln(fp, &len, &lineno, delim, flags))) {
+    printf("lineno: %zu, length: %zu, line: %s\n", lineno, len, line);
+    free(line);
+  }
+
+  // CHECK: fparseln
+
+  return 0;
+}


        


More information about the llvm-commits mailing list