summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2013-03-21 23:07:04 +0000
committerpjd <pjd@FreeBSD.org>2013-03-21 23:07:04 +0000
commitc93f0c9d3c49c5b24cc52ab707ebdd772327e38e (patch)
tree53381556d8ab95fda769719c857f01568a130db3 /tools
parent75c735d00a173ab2e6e667aa31a422bf6f28050d (diff)
downloadFreeBSD-src-c93f0c9d3c49c5b24cc52ab707ebdd772327e38e.zip
FreeBSD-src-c93f0c9d3c49c5b24cc52ab707ebdd772327e38e.tar.gz
Update regression tests after adding chflagsat(2).
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'tools')
-rw-r--r--tools/regression/pjdfstest/Makefile2
-rw-r--r--tools/regression/pjdfstest/pjdfstest.c18
-rw-r--r--tools/regression/security/cap_test/cap_test_capabilities.c10
3 files changed, 23 insertions, 7 deletions
diff --git a/tools/regression/pjdfstest/Makefile b/tools/regression/pjdfstest/Makefile
index eec813a..eca598f 100644
--- a/tools/regression/pjdfstest/Makefile
+++ b/tools/regression/pjdfstest/Makefile
@@ -6,7 +6,7 @@ ${PROG}: ${PROG}.c
@OSTYPE=`uname`; \
CFLAGS=-D__OS_$${OSTYPE}__; \
if [ $$OSTYPE = "FreeBSD" ]; then \
- CFLAGS="$$CFLAGS -DHAS_LCHMOD -DHAS_CHFLAGS -DHAS_FCHFLAGS -DHAS_LCHFLAGS -DHAS_FREEBSD_ACL -DHAS_BINDAT -DHAS_CONNECTAT"; \
+ CFLAGS="$$CFLAGS -DHAS_LCHMOD -DHAS_CHFLAGS -DHAS_FCHFLAGS -DHAS_CHFLAGSAT -DHAS_LCHFLAGS -DHAS_FREEBSD_ACL -DHAS_BINDAT -DHAS_CONNECTAT"; \
elif [ $$OSTYPE = "SunOS" ]; then \
CFLAGS="$$CFLAGS -DHAS_TRUNCATE64 -DHAS_STAT64"; \
CFLAGS="$$CFLAGS -lsocket"; \
diff --git a/tools/regression/pjdfstest/pjdfstest.c b/tools/regression/pjdfstest/pjdfstest.c
index b0b083d..fd19084 100644
--- a/tools/regression/pjdfstest/pjdfstest.c
+++ b/tools/regression/pjdfstest/pjdfstest.c
@@ -105,6 +105,9 @@ enum action {
#ifdef HAS_FCHFLAGS
ACTION_FCHFLAGS,
#endif
+#ifdef HAS_CHFLAGSAT
+ ACTION_CHFLAGSAT,
+#endif
#ifdef HAS_LCHFLAGS
ACTION_LCHFLAGS,
#endif
@@ -183,6 +186,9 @@ static struct syscall_desc syscalls[] = {
#ifdef HAS_FCHFLAGS
{ "fchflags", ACTION_FCHFLAGS, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } },
#endif
+#ifdef HAS_CHFLAGSAT
+ { "chflagsat", ACTION_CHFLAGSAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+#endif
#ifdef HAS_LCHFLAGS
{ "lchflags", ACTION_LCHFLAGS, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
#endif
@@ -306,6 +312,11 @@ static struct flag linkat_flags[] = {
{ 0, NULL }
};
+static struct flag chflagsat_flags[] = {
+ { AT_SYMLINK_NOFOLLOW, "AT_SYMLINK_NOFOLLOW" },
+ { 0, NULL }
+};
+
static struct flag fchmodat_flags[] = {
{ AT_SYMLINK_NOFOLLOW, "AT_SYMLINK_NOFOLLOW" },
{ 0, NULL }
@@ -829,6 +840,13 @@ call_syscall(struct syscall_desc *scall, char *argv[])
(unsigned long)str2flags(chflags_flags, STR(1)));
break;
#endif
+#ifdef HAS_CHFLAGSAT
+ case ACTION_CHFLAGSAT:
+ rval = chflagsat(NUM(0), STR(1),
+ (unsigned long)str2flags(chflags_flags, STR(2)),
+ (int)str2flags(chflagsat_flags, STR(3)));
+ break;
+#endif
#ifdef HAS_LCHFLAGS
case ACTION_LCHFLAGS:
rval = lchflags(STR(0),
diff --git a/tools/regression/security/cap_test/cap_test_capabilities.c b/tools/regression/security/cap_test/cap_test_capabilities.c
index 9f5dde8..d4347ee 100644
--- a/tools/regression/security/cap_test/cap_test_capabilities.c
+++ b/tools/regression/security/cap_test/cap_test_capabilities.c
@@ -293,14 +293,12 @@ try_file_ops(int filefd, int dirfd, cap_rights_t rights)
CHECK_RESULT(fchflags, CAP_FCHFLAGS,
ret == 0 || (is_nfs && errno == EOPNOTSUPP));
-#ifdef TODO /* No such syscalls yet. */
- ret = openat(dirfd, "cap_fchflagsat", O_CREAT, 0600);
+ ret = openat(dirfd, "cap_chflagsat", O_CREAT, 0600);
CHECK(ret >= 0);
CHECK(close(ret) == 0);
- ret = fchflagsat(dfd_cap, "cap_fchflagsat", UF_NODUMP, 0);
- CHECK_RESULT(fchflagsat, CAP_FCHFLAGSAT | CAP_LOOKUP, ret == 0);
- CHECK(unlinkat(dirfd, "cap_fchflagsat", 0) == 0);
-#endif
+ ret = chflagsat(dfd_cap, "cap_chflagsat", UF_NODUMP, 0);
+ CHECK_RESULT(chflagsat, CAP_CHFLAGSAT | CAP_LOOKUP, ret == 0);
+ CHECK(unlinkat(dirfd, "cap_chflagsat", 0) == 0);
ret = fchown(fd_cap, -1, -1);
CHECK_RESULT(fchown, CAP_FCHOWN, ret == 0);
OpenPOWER on IntegriCloud