[tor-commits] [tor/maint-0.2.7] Make clang asan work with FORTIFIED_SOURCE again.

nickm at torproject.org nickm at torproject.org
Tue Feb 23 19:07:40 UTC 2016


commit 67e5d49d8a995c6d3b8bf4177046271a7d4dd157
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon Feb 22 14:07:58 2016 -0500

    Make clang asan work with FORTIFIED_SOURCE again.
    
    Short version: clang asan hates the glibc strcmp macro in
    bits/string2.h if you are passing it a constant string argument of
    length two or less.  (I could be off by one here, but that's the
    basic idea.)
    
    Closes issue 14821.
---
 changes/bug14821    | 4 ++++
 src/common/compat.h | 9 +++++++++
 2 files changed, 13 insertions(+)

diff --git a/changes/bug14821 b/changes/bug14821
new file mode 100644
index 0000000..0920d1f
--- /dev/null
+++ b/changes/bug14821
@@ -0,0 +1,4 @@
+  o Major bugfixes (compilation):
+    - Correctly repair hardened builds under the clang compiler. Previously,
+      our use of _FORTIFY_SOURCE would conflict with clang's address
+      sanitizer. Closes ticket 14821.
diff --git a/src/common/compat.h b/src/common/compat.h
index c7c468c..66cc079 100644
--- a/src/common/compat.h
+++ b/src/common/compat.h
@@ -42,6 +42,15 @@
 #include <netinet6/in6.h>
 #endif
 
+#if defined(__has_feature)
+#  if __has_feature(address_sanitizer)
+/* Some of the fancy glibc strcmp() macros include references to memory that
+ * clang rejects because it is off the end of a less-than-3. Clang hates this,
+ * even though those references never actually happen. */
+#    undef strcmp
+#  endif
+#endif
+
 #include <stdio.h>
 #include <errno.h>
 



More information about the tor-commits mailing list