[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