// Test that ASan doesn't raise false alarm when getsockname and getpeername // are called with addrlen=nullptr; // // RUN: %clangxx %s -o %t && %run %t 2>&1 #include #include #include #include int main() { const int fd = socket(AF_INET, SOCK_DGRAM, 0); assert(fd >= 0); const sockaddr_in sin = { .sin_family = AF_INET, .sin_port = htons(1234), .sin_addr = { .s_addr = htonl(INADDR_LOOPBACK), }, }; assert(connect(fd, reinterpret_cast(&sin), sizeof(sin)) == 0); errno = 0; assert(getsockname(fd, nullptr, nullptr) == -1); assert(errno == EFAULT); errno = 0; assert(getpeername(fd, nullptr, nullptr) == -1); assert(errno == EFAULT); return 0; }