Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 72 lines 1.3 kB view raw
1// SPDX-License-Identifier: GPL-2.0 2#define _GNU_SOURCE 3#define __SANE_USERSPACE_TYPES__ 4 5#include <fcntl.h> 6#include <stdio.h> 7#include <sys/stat.h> 8 9#include "kselftest_harness.h" 10#include "wrappers.h" 11 12TEST(anon_inode_no_chown) 13{ 14 int fd_context; 15 16 fd_context = sys_fsopen("tmpfs", 0); 17 ASSERT_GE(fd_context, 0); 18 19 ASSERT_LT(fchown(fd_context, 1234, 5678), 0); 20 ASSERT_EQ(errno, EOPNOTSUPP); 21 22 EXPECT_EQ(close(fd_context), 0); 23} 24 25TEST(anon_inode_no_chmod) 26{ 27 int fd_context; 28 29 fd_context = sys_fsopen("tmpfs", 0); 30 ASSERT_GE(fd_context, 0); 31 32 ASSERT_LT(fchmod(fd_context, 0777), 0); 33 ASSERT_EQ(errno, EOPNOTSUPP); 34 35 EXPECT_EQ(close(fd_context), 0); 36} 37 38TEST(anon_inode_no_exec) 39{ 40 int fd_context; 41 42 fd_context = sys_fsopen("tmpfs", 0); 43 ASSERT_GE(fd_context, 0); 44 45 char *const empty_argv[] = {NULL}; 46 char *const empty_envp[] = {NULL}; 47 48 ASSERT_LT(execveat(fd_context, "", empty_argv, empty_envp, AT_EMPTY_PATH), 0); 49 ASSERT_EQ(errno, EACCES); 50 51 EXPECT_EQ(close(fd_context), 0); 52} 53 54TEST(anon_inode_no_open) 55{ 56 int fd_context; 57 58 fd_context = sys_fsopen("tmpfs", 0); 59 ASSERT_GE(fd_context, 0); 60 61 ASSERT_GE(dup2(fd_context, 500), 0); 62 ASSERT_EQ(close(fd_context), 0); 63 fd_context = 500; 64 65 ASSERT_LT(open("/proc/self/fd/500", 0), 0); 66 ASSERT_EQ(errno, ENXIO); 67 68 EXPECT_EQ(close(fd_context), 0); 69} 70 71TEST_HARNESS_MAIN 72