1*d21b3d34SFangrui Song // RUN: %clangxx_msan -g %s -o %t
2*d21b3d34SFangrui Song // RUN: %run %t
3*d21b3d34SFangrui Song // RUN: not %run %t 2 2>&1 | FileCheck %s --check-prefix=CHECK-FPUTS
4*d21b3d34SFangrui Song // RUN: not %run %t 3 3 2>&1 | FileCheck %s --check-prefix=CHECK-PUTS
5*d21b3d34SFangrui Song 
6*d21b3d34SFangrui Song #include <stdio.h>
7*d21b3d34SFangrui Song #include <stdlib.h>
8*d21b3d34SFangrui Song #include <string.h>
9*d21b3d34SFangrui Song 
test_fgets()10*d21b3d34SFangrui Song int test_fgets() {
11*d21b3d34SFangrui Song   FILE *fp = fopen("/dev/zero", "r");
12*d21b3d34SFangrui Song   char c;
13*d21b3d34SFangrui Song 
14*d21b3d34SFangrui Song   if (!fgets(&c, 1, fp))
15*d21b3d34SFangrui Song     return 1;
16*d21b3d34SFangrui Song 
17*d21b3d34SFangrui Song   if (c == '1') // No error
18*d21b3d34SFangrui Song     return 2;
19*d21b3d34SFangrui Song 
20*d21b3d34SFangrui Song   fclose(fp);
21*d21b3d34SFangrui Song   return 0;
22*d21b3d34SFangrui Song }
23*d21b3d34SFangrui Song 
test_fputs()24*d21b3d34SFangrui Song int test_fputs() {
25*d21b3d34SFangrui Song   FILE *fp = fopen("/dev/null", "w");
26*d21b3d34SFangrui Song   char buf[2];
27*d21b3d34SFangrui Song   fputs(buf, fp); // BOOM
28*d21b3d34SFangrui Song   return fclose(fp);
29*d21b3d34SFangrui Song }
30*d21b3d34SFangrui Song 
test_puts()31*d21b3d34SFangrui Song void test_puts() {
32*d21b3d34SFangrui Song   char buf[2];
33*d21b3d34SFangrui Song   puts(buf); // BOOM
34*d21b3d34SFangrui Song }
35*d21b3d34SFangrui Song 
main(int argc,char * argv[])36*d21b3d34SFangrui Song int main(int argc, char *argv[]) {
37*d21b3d34SFangrui Song   if (argc == 1)
38*d21b3d34SFangrui Song     test_fgets();
39*d21b3d34SFangrui Song   else if (argc == 2)
40*d21b3d34SFangrui Song     test_fputs();
41*d21b3d34SFangrui Song   else
42*d21b3d34SFangrui Song     test_puts();
43*d21b3d34SFangrui Song   return 0;
44*d21b3d34SFangrui Song }
45*d21b3d34SFangrui Song 
46*d21b3d34SFangrui Song // CHECK-FPUTS: Uninitialized bytes in __interceptor_fputs at offset 0 inside
47*d21b3d34SFangrui Song // CHECK-PUTS: Uninitialized bytes in __interceptor_puts at offset 0 inside
48