// RUN: %clangxx_msan -m64 -O0 -g %s -o %t && %run %t
// RUN: %clangxx_msan -m64 -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;
}
