// RUN: %clangxx_msan -O0 %s -o %t && %run %t | |
#include <sys/types.h> | |
#include <sys/socket.h> | |
#include <netdb.h> | |
#include <stdlib.h> | |
void poison_stack_ahead() { | |
char buf[100000]; | |
// With -O0 this poisons a large chunk of stack. | |
} | |
int main(void) { | |
poison_stack_ahead(); | |
struct addrinfo *ai; | |
// This should trigger loading of libnss_dns and friends. | |
// Those libraries are typically uninstrumented.They will call strlen() on a | |
// stack-allocated buffer, which is very likely to be poisoned. Test that we | |
// don't report this as an UMR. | |
int res = getaddrinfo("not-in-etc-hosts", NULL, NULL, &ai); | |
return 0; | |
} |