diff --git a/changes/bug14821 b/changes/bug14821
new file mode 100644
index 0000000000000000000000000000000000000000..0920d1fffc45b551b1449035e2902f22bbd3581e
--- /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 c7c468c7545ca5d9b86dc3a67f999d4dbe650efc..66cc079259312e614ba5a31515e2f02213a24ad7 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>