Explorar el Código

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.
Nick Mathewson hace 10 años
padre
commit
67e5d49d8a
Se han modificado 2 ficheros con 13 adiciones y 0 borrados
  1. 4 0
      changes/bug14821
  2. 9 0
      src/common/compat.h

+ 4 - 0
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.

+ 9 - 0
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>