// RUN: %clangxx_msan -std=c++11 -O0 -g %s -o %t && %run %t

#include <assert.h>
#include <fcntl.h>
#include <sanitizer/msan_interface.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>

int main(void) {
  struct file_handle *handle = reinterpret_cast<struct file_handle *>(
      malloc(sizeof(*handle) + MAX_HANDLE_SZ));
  handle->handle_bytes = MAX_HANDLE_SZ;

  int mount_id;
  int res = name_to_handle_at(AT_FDCWD, "/bin/cat", handle, &mount_id, 0);
  assert(!res);
  __msan_check_mem_is_initialized(&mount_id, sizeof(mount_id));
  __msan_check_mem_is_initialized(&handle->handle_bytes,
                                  sizeof(handle->handle_bytes));
  __msan_check_mem_is_initialized(&handle->handle_type,
                                  sizeof(handle->handle_type));
  __msan_check_mem_is_initialized(&handle->f_handle, handle->handle_bytes);

  free(handle);
  return 0;
}
