1 // RUN: %clangxx_msan -m64 -O0 -g %s -o %t && %t
2 // RUN: %clangxx_msan -m64 -O3 -g %s -o %t && %t
4 // RUN: %clangxx_msan -DPOSITIVE -m64 -O0 -g %s -o %t && not %t 2>&1 | FileCheck %s
5 // RUN: %clangxx_msan -DPOSITIVE -m64 -O3 -g %s -o %t && not %t 2>&1 | FileCheck %s
12 #include <sys/ioctl.h>
13 #include <sys/socket.h>
16 int main(int argc
, char **argv
) {
17 int fd
= socket(AF_INET
, SOCK_STREAM
, 0);
19 struct ifreq ifreqs
[20];
21 ifc
.ifc_ifcu
.ifcu_req
= ifreqs
;
23 ifc
.ifc_len
= sizeof(ifreqs
);
25 int res
= ioctl(fd
, SIOCGIFCONF
, (void *)&ifc
);
26 // CHECK: UMR in ioctl{{.*}} at offset 0
27 // CHECK: WARNING: MemorySanitizer: use-of-uninitialized-value
28 // CHECK: #{{.*}} in main {{.*}}ioctl_custom.cc:[[@LINE-3]]
30 for (int i
= 0; i
< ifc
.ifc_len
/ sizeof(*ifc
.ifc_ifcu
.ifcu_req
); ++i
)
31 printf("%d %zu %s\n", i
, strlen(ifreqs
[i
].ifr_name
), ifreqs
[i
].ifr_name
);