1 // RUN: %clangxx_msan -std=c++11 -O0 -g %s -o %t && %run %t
2 
3 #include <assert.h>
4 #include <fcntl.h>
5 #include <sanitizer/msan_interface.h>
6 #include <stdlib.h>
7 #include <sys/stat.h>
8 #include <sys/types.h>
9 #include <unistd.h>
10 
main(void)11 int main(void) {
12   struct file_handle *handle = reinterpret_cast<struct file_handle *>(
13       malloc(sizeof(*handle) + MAX_HANDLE_SZ));
14   handle->handle_bytes = MAX_HANDLE_SZ;
15 
16   int mount_id;
17   int res = name_to_handle_at(AT_FDCWD, "/dev/null", handle, &mount_id, 0);
18   assert(!res);
19   __msan_check_mem_is_initialized(&mount_id, sizeof(mount_id));
20   __msan_check_mem_is_initialized(&handle->handle_bytes,
21                                   sizeof(handle->handle_bytes));
22   __msan_check_mem_is_initialized(&handle->handle_type,
23                                   sizeof(handle->handle_type));
24   __msan_check_mem_is_initialized(&handle->f_handle, handle->handle_bytes);
25 
26   free(handle);
27   return 0;
28 }
29