MemorySanitizer: address false positive

Explicitly unpoison the result of FD_ZERO

Tests now pass, using -fsanitize=memory

Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
Emilia Kasper
2016-02-22 16:58:36 +01:00
parent a2d0baa2d9
commit efc943be56

View File

@@ -173,6 +173,12 @@ typedef unsigned int u_int;
# undef FIONBIO # undef FIONBIO
#endif #endif
#if defined(__has_feature)
# if __has_feature(memory_sanitizer)
# include <sanitizer/msan_interface.h>
# endif
#endif
#undef BUFSIZZ #undef BUFSIZZ
#define BUFSIZZ 1024*8 #define BUFSIZZ 1024*8
#define S_CLIENT_IRC_READ_TIMEOUT 8 #define S_CLIENT_IRC_READ_TIMEOUT 8
@@ -905,6 +911,16 @@ int s_client_main(int argc, char **argv)
SRP_ARG srp_arg = { NULL, NULL, 0, 0, 0, 1024 }; SRP_ARG srp_arg = { NULL, NULL, 0, 0, 0, 1024 };
#endif #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]); prog = opt_progname(argv[0]);
c_quiet = 0; c_quiet = 0;
c_ign_eof = 0; c_ign_eof = 0;