1d21b3d34SFangrui Song // RUN: %clangxx_msan -g %s -o %t
220345707SMichał Górny // RUN: not %run %t 2>&1 | FileCheck %s
3d21b3d34SFangrui Song // RUN: %t 1
4d21b3d34SFangrui Song
5d21b3d34SFangrui Song #include <stdio.h>
6d21b3d34SFangrui Song #include <stdlib.h>
7d21b3d34SFangrui Song
test_fread()8d21b3d34SFangrui Song int test_fread() {
9d21b3d34SFangrui Song FILE *f = fopen("/dev/zero", "r");
10d21b3d34SFangrui Song char c;
11d21b3d34SFangrui Song unsigned read = fread(&c, sizeof(c), 1, f);
12d21b3d34SFangrui Song fclose(f);
13d21b3d34SFangrui Song if (c == '1') // No error
14d21b3d34SFangrui Song return 1;
15d21b3d34SFangrui Song return 0;
16d21b3d34SFangrui Song }
17d21b3d34SFangrui Song
test_fwrite()18d21b3d34SFangrui Song int test_fwrite() {
19d21b3d34SFangrui Song FILE *f = fopen("/dev/null", "w");
20d21b3d34SFangrui Song char c;
21d21b3d34SFangrui Song if (fwrite(&c, sizeof(c), 1, f) != sizeof(c)) // BOOM
22d21b3d34SFangrui Song return 1;
23d21b3d34SFangrui Song return fclose(f);
24d21b3d34SFangrui Song }
25d21b3d34SFangrui Song
main(int argc,char * argv[])26d21b3d34SFangrui Song int main(int argc, char *argv[]) {
27d21b3d34SFangrui Song if (argc > 1)
28d21b3d34SFangrui Song test_fread();
29d21b3d34SFangrui Song else
30d21b3d34SFangrui Song test_fwrite();
31d21b3d34SFangrui Song return 0;
32d21b3d34SFangrui Song }
33d21b3d34SFangrui Song
34*5732cdc1SMarco Elver // CHECK: Uninitialized bytes in fwrite at offset 0 inside
35