1*d21b3d34SFangrui Song // RUN: %clangxx_msan -O0 -g %s -o %t && %run %t 2*d21b3d34SFangrui Song // RUN: %clangxx_msan -O3 -g %s -o %t && %run %t 3*d21b3d34SFangrui Song 4*d21b3d34SFangrui Song #include <assert.h> 5*d21b3d34SFangrui Song #include <fcntl.h> 6*d21b3d34SFangrui Song #include <sound/asound.h> 7*d21b3d34SFangrui Song #include <stdio.h> 8*d21b3d34SFangrui Song #include <stdlib.h> 9*d21b3d34SFangrui Song #include <sys/ioctl.h> 10*d21b3d34SFangrui Song #include <sys/socket.h> 11*d21b3d34SFangrui Song #include <unistd.h> 12*d21b3d34SFangrui Song 13*d21b3d34SFangrui Song #include <sanitizer/msan_interface.h> 14*d21b3d34SFangrui Song main(int argc,char ** argv)15*d21b3d34SFangrui Songint main(int argc, char **argv) { 16*d21b3d34SFangrui Song int fd = open("/dev/snd/controlC0", O_RDONLY); 17*d21b3d34SFangrui Song if (fd < 0) { 18*d21b3d34SFangrui Song printf("Unable to open sound device."); 19*d21b3d34SFangrui Song return 0; 20*d21b3d34SFangrui Song } 21*d21b3d34SFangrui Song const unsigned sz = sizeof(snd_ctl_card_info); 22*d21b3d34SFangrui Song void *info = malloc(sz + 1); 23*d21b3d34SFangrui Song assert(__msan_test_shadow(info, sz) == 0); 24*d21b3d34SFangrui Song assert(ioctl(fd, SNDRV_CTL_IOCTL_CARD_INFO, info) >= 0); 25*d21b3d34SFangrui Song assert(__msan_test_shadow(info, sz + 1) == sz); 26*d21b3d34SFangrui Song close(fd); 27*d21b3d34SFangrui Song free(info); 28*d21b3d34SFangrui Song return 0; 29*d21b3d34SFangrui Song } 30