[PATCH] D56150: [sanitizer_common] Fix devname_r() return type on !NetBSD

Michał Górny via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sat Dec 29 09:28:04 PST 2018


mgorny created this revision.
mgorny added reviewers: krytarowski, vitalybuka.
Herald added subscribers: Sanitizers, llvm-commits, kubamracek, emaste.

Update the interceptor for devname_r() to account for correct return
types on different platforms.  This function returns int on NetBSD
but char* on FreeBSD/OSX.  Noticed by @krytarowski.


Repository:
  rCRT Compiler Runtime

https://reviews.llvm.org/D56150

Files:
  lib/sanitizer_common/sanitizer_common_interceptors.inc


Index: lib/sanitizer_common/sanitizer_common_interceptors.inc
===================================================================
--- lib/sanitizer_common/sanitizer_common_interceptors.inc
+++ lib/sanitizer_common/sanitizer_common_interceptors.inc
@@ -7067,12 +7067,19 @@
 #endif
 
 #if SANITIZER_INTERCEPT_DEVNAME_R
-INTERCEPTOR(int, devname_r, u64 dev, u32 type, char *path, uptr len) {
+#if SANITIZER_NETBSD
+#define DEVNAME_R_RETTYPE int
+#define DEVNAME_R_SUCCESS(x) (!(x))
+#else
+#define DEVNAME_R_RETTYPE char*
+#define DEVNAME_R_SUCCESS(x) (x)
+#endif
+INTERCEPTOR(DEVNAME_R_RETTYPE, devname_r, u64 dev, u32 type, char *path, uptr len) {
   void *ctx;
-  int res;
+  DEVNAME_R_RETTYPE res;
   COMMON_INTERCEPTOR_ENTER(ctx, devname_r, dev, type, path, len);
   res = REAL(devname_r)(dev, type, path, len);
-  if (!res)
+  if (DEVNAME_R_SUCCESS(res))
     COMMON_INTERCEPTOR_WRITE_RANGE(ctx, path, REAL(strlen)(path) + 1);
   return res;
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D56150.179695.patch
Type: text/x-patch
Size: 948 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20181229/650d4e86/attachment.bin>


More information about the cfe-commits mailing list