MemorySanitizer: address false positive
Explicitly unpoison the result of FD_ZERO
Tests now pass, using -fsanitize=memory
Reviewed-by: Rich Salz <rsalz@openssl.org>
diff --git a/apps/s_client.c b/apps/s_client.c
index 9d0b52a..b533780 100644
--- a/apps/s_client.c
+++ b/apps/s_client.c
@@ -173,6 +173,12 @@
# undef FIONBIO
#endif
+#if defined(__has_feature)
+# if __has_feature(memory_sanitizer)
+# include <sanitizer/msan_interface.h>
+# endif
+#endif
+
#undef BUFSIZZ
#define BUFSIZZ 1024*8
#define S_CLIENT_IRC_READ_TIMEOUT 8
@@ -905,6 +911,16 @@
SRP_ARG srp_arg = { NULL, NULL, 0, 0, 0, 1024 };
#endif
+ FD_ZERO(&readfds);
+ FD_ZERO(&writefds);
+/* Known false-positive of MemorySanitizer. */
+#if defined(__has_feature)
+# if __has_feature(memory_sanitizer)
+ __msan_unpoison(&readfds, sizeof(readfds));
+ __msan_unpoison(&writefds, sizeof(writefds));
+# endif
+#endif
+
prog = opt_progname(argv[0]);
c_quiet = 0;
c_ign_eof = 0;