diff options
Diffstat (limited to 'compiler-rt/test/msan/Linux/ioctl_sound.cpp')
| -rw-r--r-- | compiler-rt/test/msan/Linux/ioctl_sound.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/compiler-rt/test/msan/Linux/ioctl_sound.cpp b/compiler-rt/test/msan/Linux/ioctl_sound.cpp new file mode 100644 index 00000000000..fb36c52f2e7 --- /dev/null +++ b/compiler-rt/test/msan/Linux/ioctl_sound.cpp @@ -0,0 +1,29 @@ +// RUN: %clangxx_msan -O0 -g %s -o %t && %run %t +// RUN: %clangxx_msan -O3 -g %s -o %t && %run %t + +#include <assert.h> +#include <fcntl.h> +#include <sound/asound.h> +#include <stdio.h> +#include <stdlib.h> +#include <sys/ioctl.h> +#include <sys/socket.h> +#include <unistd.h> + +#include <sanitizer/msan_interface.h> + +int main(int argc, char **argv) { + int fd = open("/dev/snd/controlC0", O_RDONLY); + if (fd < 0) { + printf("Unable to open sound device."); + return 0; + } + const unsigned sz = sizeof(snd_ctl_card_info); + void *info = malloc(sz + 1); + assert(__msan_test_shadow(info, sz) == 0); + assert(ioctl(fd, SNDRV_CTL_IOCTL_CARD_INFO, info) >= 0); + assert(__msan_test_shadow(info, sz + 1) == sz); + close(fd); + free(info); + return 0; +} |

