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
11int main(void) {
12 struct file_handle *handle = reinterpret_cast<struct file_handle *>(
13 malloc(size: 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, name: "/dev/null", handle: handle, mnt_id: &mount_id, flags: 0);
18 assert(!res);
19 __msan_check_mem_is_initialized(x: &mount_id, size: sizeof(mount_id));
20 __msan_check_mem_is_initialized(x: &handle->handle_bytes,
21 size: sizeof(handle->handle_bytes));
22 __msan_check_mem_is_initialized(x: &handle->handle_type,
23 size: sizeof(handle->handle_type));
24 __msan_check_mem_is_initialized(x: &handle->f_handle, size: handle->handle_bytes);
25
26 free(ptr: handle);
27 return 0;
28}
29

source code of compiler-rt/test/msan/Linux/name_to_handle_at.cpp