Update regression tests after adding chflagsat(2).
Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
def84b9736
commit
ff96467412
tools/regression
@ -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"; \
|
||||
|
@ -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),
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user