TmpFile
int in_fd = open(TmpFile("cap_sendfile_in"), O_CREAT|O_RDWR, 0644);
unlink(TmpFile("cap_sendfile_in"));
int fd = open(TmpFile("cap_fd_transfer"), O_RDWR | O_CREAT, 0644);
int rc = mkdir(TmpFile("cap_at_topdir"), 0755);
int dfd = open(TmpFile("cap_at_topdir"), O_RDONLY);
rmdir(TmpFile("cap_at_topdir/cap_subdir"));
rmdir(TmpFile("cap_at_topdir/cap_subdir"));
unlink(TmpFile("cap_at_topdir/cap_fifo"));
unlink(TmpFile("cap_at_topdir/cap_fifo"));
rmdir(TmpFile("cap_at_topdir"));
int rc = mkdir(TmpFile("cap_at_topdir"), 0755);
int dfd = open(TmpFile("cap_at_topdir"), O_RDONLY);
unlink(TmpFile("cap_at_topdir/cap_device"));
unlink(TmpFile("cap_at_topdir/cap_device"));
unlink(TmpFile("cap_at_topdir/cap_fifo"));
unlink(TmpFile("cap_at_topdir/cap_fifo"));
rmdir(TmpFile("cap_at_topdir"));
FORK_TEST_ON(Capability, ExtendedAttributesIfAvailable, TmpFile("cap_extattr")) {
int fd = open(TmpFile("cap_extattr"), O_RDONLY|O_CREAT, 0644);
int fd = open(TmpFile("cap_root_owned"), O_RDONLY|O_CREAT, 0644);
unlink(TmpFile("cap_root_owned"));
FORK_TEST_ON(Capability, OpenAtDirectoryTraversal, TmpFile("cap_openat_testfile")) {
FORK_TEST_ON(Capability, FileInSync, TmpFile("cap_file_sync")) {
int fd = open(TmpFile("cap_file_sync"), O_RDWR|O_CREAT, 0644);
FORK_TEST_ON(Capability, Inheritance, TmpFile("cap_openat_write_testfile")) {
FORK_TEST_ON(Capability, Mmap, TmpFile("cap_mmap_operations")) {
int fd = open(TmpFile("cap_mmap_operations"), O_RDWR | O_CREAT, 0644);
FORK_TEST_ON(Capability, Operations, TmpFile("cap_fd_operations")) {
int fd = open(TmpFile("cap_fd_operations"), O_RDWR | O_CREAT, 0644);
int rc = mkdir(TmpFile("cap_dirops"), 0755);
int dfd = open(TmpFile("cap_dirops"), O_RDONLY | O_DIRECTORY | extra);
FORK_TEST_ON(Capability, SocketTransfer, TmpFile("cap_fd_transfer")) {
fd_file_(open(TmpFile("cap_capmode"), O_RDWR|O_CREAT, 0644)),
int rc = mkdir(TmpFile("cap_at_syscalls"), 0755);
int dfd = open(TmpFile("cap_at_syscalls"), O_RDONLY);
rmdir(TmpFile("cap_at_syscalls/subdir"));
unlink(TmpFile("cap_at_syscalls/symlink"));
unlink(TmpFile("cap_at_syscalls/linky"));
unlink(TmpFile("cap_at_syscalls/testfile"));
rmdir(TmpFile("cap_at_syscalls"));
int rc = mkdir(TmpFile("cap_at_syscalls_cwd"), 0755);
int dfd = open(TmpFile("cap_at_syscalls_cwd"), O_RDONLY);
unlink(TmpFile("cap_capmode"));
rmdir(TmpFile("cap_at_syscalls_cwd/subdir"));
unlink(TmpFile("cap_at_syscalls_cwd/symlink"));
unlink(TmpFile("cap_at_syscalls_cwd/linky"));
unlink(TmpFile("cap_at_syscalls_cwd/testfile"));
rmdir(TmpFile("cap_at_syscalls_cwd"));
EXPECT_CAPMODE(access(TmpFile("cap_capmode_access"), F_OK));
EXPECT_CAPMODE(acct(TmpFile("cap_capmode_acct")));
EXPECT_CAPMODE(chdir(TmpFile("cap_capmode_chdir")));
EXPECT_CAPMODE(chflags(TmpFile("cap_capmode_chflags"), UF_NODUMP));
EXPECT_CAPMODE(chmod(TmpFile("cap_capmode_chmod"), 0644));
EXPECT_CAPMODE(chown(TmpFile("cap_capmode_chown"), -1, -1));
EXPECT_CAPMODE(chroot(TmpFile("cap_capmode_chroot")));
EXPECT_CAPMODE(creat(TmpFile("cap_capmode_creat"), 0644));
EXPECT_CAPMODE(link(TmpFile("foo"), TmpFile("bar")));
EXPECT_CAPMODE(lstat(TmpFile("cap_capmode_lstat"), &sb));
EXPECT_CAPMODE(mknod(TmpFile("capmode_mknod"), 0644 | S_IFIFO, 0));
EXPECT_CAPMODE(readlink(TmpFile("cap_capmode_readlink"), buf, sizeof(buf)));
EXPECT_CAPMODE(revoke(TmpFile("cap_capmode_revoke")));
EXPECT_CAPMODE(stat(TmpFile("cap_capmode_stat"), &sb));
EXPECT_CAPMODE(symlink(TmpFile("cap_capmode_symlink_from"), TmpFile("cap_capmode_symlink_to")));
EXPECT_CAPMODE(unlink(TmpFile("cap_capmode_unlink")));
const char *TmpFile(const char *pathname);
int rc = mkdir(TmpFile(TOPDIR), 0755);
wd_ = open(TmpFile(TOPDIR), O_DIRECTORY);
CreateFile(TmpFile(TOPDIR "/" INFILE));
CreateFile(TmpFile(TOPDIR "/" OUTFILE));
unlink(TmpFile(TOPDIR "/" INFILE));
unlink(TmpFile(TOPDIR "/" OUTFILE));
rmdir(TmpFile(TOPDIR));
int fd = open(TmpFile("cap_fcntl_cmds"), O_RDWR|O_CREAT, 0644);
unlink(TmpFile("cap_fcntl_cmds"));
int fd = open(TmpFile("cap_fcntl_readlock"), O_RDWR|O_CREAT, 0644);
unlink(TmpFile("cap_fcntl_readlock"));
int fd = open(TmpFile("cap_fcntl_subrightnorm"), O_RDWR|O_CREAT, 0644);
unlink(TmpFile("cap_fcntl_subrightnorm"));
int fd = open(TmpFile("cap_fcntl_subrightpreserve"), O_RDWR|O_CREAT, 0644);
unlink(TmpFile("cap_fcntl_subrightpreserve"));
int fd = open(TmpFile("cap_fcntl_subrights"), O_RDWR|O_CREAT, 0644);
unlink(TmpFile("cap_fcntl_subrights"));
Fexecve(), temp_script_filename_(TmpFile("cap_sh_script")) {}
int fd = open(TmpFile("cap_bpf_capmode"), O_CREAT|O_RDWR, 0644);
EXPECT_SYSCALL_FAIL(ECAPMODE, open(TmpFile("cap_bpf_capmode"), O_RDONLY));
unlink(TmpFile("cap_bpf_capmode"));
int fd = open(TmpFile("cap_aio"), O_CREAT|O_RDWR, 0644);
unlink(TmpFile("cap_aio"));
int fd_all = open(TmpFile("cap_lease"), O_CREAT|O_RDWR, 0644);
unlink(TmpFile("cap_lease"));
int fd = open(TmpFile("cap_invalid_rights"), O_RDONLY|O_CREAT, 0644);
unlink(TmpFile("cap_invalid_rights"));
FORK_TEST_ON(Linux, OpenByHandleAtIfRoot, TmpFile("cap_openbyhandle_testfile")) {
int fd = open(TmpFile("cap_fstatat"), O_CREAT|O_RDWR, 0644);
unlink(TmpFile("cap_fstatat"));
int rc = mkdir(TmpFile("cap_notify"), 0755);
int dfd = open(TmpFile("cap_notify"), O_RDONLY);
int fd = open(TmpFile("cap_notify/file"), O_CREAT|O_RDWR, 0644);
unlink(TmpFile("cap_notify/temp"));
int fd = open(TmpFile("cap_notify/temp"), O_CREAT|O_RDWR, 0644);
unlink(TmpFile("cap_notify/file"));
unlink(TmpFile("cap_notify/temp"));
rmdir(TmpFile("cap_notify"));
int fd = open(TmpFile("cap_inotify"), O_CREAT|O_RDWR, 0644);
EXPECT_NOTCAPABLE(inotify_add_watch(cap_fd_rw, TmpFile("cap_inotify"), IN_ACCESS|IN_MODIFY));
int wd = inotify_add_watch(i_fd, TmpFile("cap_inotify"), IN_ACCESS|IN_MODIFY);
unlink(TmpFile("cap_inotify"));
int rc = mkdir(TmpFile(TOPDIR), 0755);
rc = mkdir(TmpFile(SUBDIR), 0755);
const char *p = TmpFile(TOPDIR); // maybe "/tmp/somewhere/cap_topdir"
CreateFile(TmpFile(TOPDIR "/topfile"), "Top-level file");
CreateFile(TmpFile(SUBDIR "/bottomfile"), "File in subdirectory");
EXPECT_OK(symlink("topfile", TmpFile(TOPDIR "/symlink.samedir")));
EXPECT_OK(symlink("subdir/bottomfile", TmpFile(TOPDIR "/symlink.down")));
EXPECT_OK(symlink(TmpFile(TOPDIR "/topfile"), TmpFile(SUBDIR "/symlink.absolute_in")));
EXPECT_OK(symlink("/etc/passwd", TmpFile(TOPDIR "/symlink.absolute_out")));
std::string dots2top = dots2root + TmpFile(TOPDIR "/topfile");
EXPECT_OK(symlink(dots2top.c_str(), TmpFile(TOPDIR "/symlink.relative_in")));
EXPECT_OK(symlink(dots2passwd.c_str(), TmpFile(TOPDIR "/symlink.relative_out")));
EXPECT_OK(symlink("../topfile", TmpFile(SUBDIR "/symlink.up")));
EXPECT_OK(symlink("./", TmpFile(TOPDIR "/dsymlink.samedir")));
EXPECT_OK(symlink("subdir/", TmpFile(TOPDIR "/dsymlink.down")));
EXPECT_OK(symlink(TmpFile(TOPDIR "/"), TmpFile(SUBDIR "/dsymlink.absolute_in")));
EXPECT_OK(symlink("/etc/", TmpFile(TOPDIR "/dsymlink.absolute_out")));
EXPECT_OK(symlink(dots2cwd.c_str(), TmpFile(TOPDIR "/dsymlink.relative_in")));
EXPECT_OK(symlink(dots2etc.c_str(), TmpFile(TOPDIR "/dsymlink.relative_out")));
EXPECT_OK(symlink("../", TmpFile(SUBDIR "/dsymlink.up")));
dir_fd_ = open(TmpFile(TOPDIR), O_RDONLY);
sub_fd_ = open(TmpFile(SUBDIR), O_RDONLY);
unlink(TmpFile(SUBDIR "/symlink.up"));
unlink(TmpFile(SUBDIR "/symlink.absolute_in"));
unlink(TmpFile(TOPDIR "/symlink.absolute_out"));
unlink(TmpFile(TOPDIR "/symlink.relative_in"));
unlink(TmpFile(TOPDIR "/symlink.relative_out"));
unlink(TmpFile(TOPDIR "/symlink.down"));
unlink(TmpFile(TOPDIR "/symlink.samedir"));
unlink(TmpFile(SUBDIR "/dsymlink.up"));
unlink(TmpFile(SUBDIR "/dsymlink.absolute_in"));
unlink(TmpFile(TOPDIR "/dsymlink.absolute_out"));
unlink(TmpFile(TOPDIR "/dsymlink.relative_in"));
unlink(TmpFile(TOPDIR "/dsymlink.relative_out"));
unlink(TmpFile(TOPDIR "/dsymlink.down"));
unlink(TmpFile(TOPDIR "/dsymlink.samedir"));
unlink(TmpFile(SUBDIR "/bottomfile"));
unlink(TmpFile(TOPDIR "/topfile"));
rmdir(TmpFile(SUBDIR));
rmdir(TmpFile(TOPDIR));
const char *src_path = TmpFile(filename);
const char *dir_path = TmpFile("renameat_test_dir");
FORK_TEST_ON(Select, LotsOFileDescriptors, TmpFile("cap_select")) {
int fd = open(TmpFile("cap_select"), O_RDWR | O_CREAT, 0644);
FORK_TEST_ON(Poll, LotsOFileDescriptors, TmpFile("cap_poll")) {
int fd = open(TmpFile("cap_poll"), O_RDWR | O_CREAT, 0644);
const char* socketName = TmpFile("capsicum-test.socket");