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 Songint 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 Songint 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 Songvoid 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 Songint 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