Date: Fri, 5 Aug 2011 17:43:11 +0000 (UTC) From: Jonathan Anderson <jonathan@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r224660 - head/tools/regression/security/cap_test Message-ID: <201108051743.p75HhBo5015339@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jonathan Date: Fri Aug 5 17:43:11 2011 New Revision: 224660 URL: http://svn.freebsd.org/changeset/base/224660 Log: Expect fchflags(2) to fail with EOPNOTSUPP on NFS. Even if we have CAP_FCHFLAGS, fchflags(2) fails on NFS. This is normal and expected, so don't fail the test because of it. Note that, whether or not we are on NFS, fchflags(2) should always fail with ENOTCAPABLE if we are using a capability that does not have the CAP_FCHFLAGS right. Approved by: re (kib), mentor (rwatson) Sponsored by: Google Inc Modified: head/tools/regression/security/cap_test/cap_test_capabilities.c Modified: head/tools/regression/security/cap_test/cap_test_capabilities.c ============================================================================== --- head/tools/regression/security/cap_test/cap_test_capabilities.c Fri Aug 5 17:33:12 2011 (r224659) +++ head/tools/regression/security/cap_test/cap_test_capabilities.c Fri Aug 5 17:43:11 2011 (r224660) @@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$"); #include <fcntl.h> #include <stdio.h> #include <stdlib.h> +#include <string.h> #include <unistd.h> #include "cap_test.h" @@ -102,9 +103,13 @@ try_file_ops(int fd, cap_rights_t rights off_t off; void *p; char ch; - int ret; + int ret, is_nfs; int success = PASSED; + REQUIRE(fstatfs(fd, &sf)); + is_nfs = (strncmp("nfs", sf.f_fstypename, sizeof(sf.f_fstypename)) + == 0); + REQUIRE(fd_cap = cap_new(fd, rights)); REQUIRE(fd_capcap = cap_new(fd_cap, rights)); CHECK(fd_capcap != fd_cap); @@ -126,8 +131,12 @@ try_file_ops(int fd, cap_rights_t rights off = lseek(fd_cap, 0, SEEK_SET); CHECK_RESULT(lseek, CAP_SEEK, off >= 0); + /* + * Note: this is not expected to work over NFS. + */ ret = fchflags(fd_cap, UF_NODUMP); - CHECK_RESULT(fchflags, CAP_FCHFLAGS, ret == 0); + CHECK_RESULT(fchflags, CAP_FCHFLAGS, + (ret == 0) || (is_nfs && (errno == EOPNOTSUPP))); ret = fstat(fd_cap, &sb); CHECK_RESULT(fstat, CAP_FSTAT, ret == 0);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201108051743.p75HhBo5015339>