e5a5dd6cc4
The following change imports google/capsicum-test@9333154 from GitHub, omitting the embedded version of googletest, as well as the incomplete libcasper. This test suite helps verify capsicum(3) support via functional tests written in the GoogleTest test framework. Kernel support for capsicum(4) is tested by side-effect of testing capsicum(3). NB: as discussed in a previous [closed] PR [1], the casper(3) tests are incomplete/buggy and will not pass on FreeBSD. Thus, I have no intention of integrating them into the build/test on FreeBSD as-is. The import command used was: ``` curl -L https://github.com/google/capsicum-test/tarball/9333154 | tar --strip-components=1 -xvzf - -C dist/ rm -Rf dist/*/ ``` 1. https://github.com/google/capsicum-test/pull/26 Reviewed by: emaste (mentor) Differential Revision: https://reviews.freebsd.org/D19261 |
||
---|---|---|
.gitignore | ||
capability-fd-pair.cc | ||
capability-fd.cc | ||
capmode.cc | ||
capsicum-freebsd.h | ||
capsicum-linux.h | ||
capsicum-rights.h | ||
capsicum-test-main.cc | ||
capsicum-test.cc | ||
capsicum-test.h | ||
capsicum.h | ||
CONTRIBUTING.md | ||
fcntl.cc | ||
fexecve.cc | ||
GNUmakefile | ||
ioctl.cc | ||
LICENSE | ||
linux.cc | ||
makefile | ||
mini-me.c | ||
mqueue.cc | ||
openat.cc | ||
overhead.cc | ||
procdesc.cc | ||
README.md | ||
rename.cc | ||
sctp.cc | ||
select.cc | ||
showrights | ||
smoketest.c | ||
socket.cc | ||
syscalls.h | ||
sysctl.cc | ||
waittest.c |
Capsicum User Space Tests
This directory holds unit tests for Capsicum object-capabilities. The tests exercise the syscall interface to a Capsicum-enabled operating system, currently either FreeBSD >=10.x or a modified Linux kernel (the capsicum-linux project).
The tests are written in C++98, and use the Google Test framework, with some additions to fork off particular tests (because a process that enters capability mode cannot leave it again).
Provenance
The original basis for these tests was:
- unit tests written by Robert Watson and Jonathan Anderson for the original FreeBSD 9.x Capsicum implementation
- unit tests written by Meredydd Luff for the original Capsicum-Linux port.
These tests were coalesced and moved into an independent repository to enable comparative testing across multiple OSes, and then substantially extended.
OS Configuration
Linux
The following kernel configuration options are needed to run the tests:
CONFIG_SECURITY_CAPSICUM
: enable the Capsicum frameworkCONFIG_PROCDESC
: enable Capsicum process-descriptor functionalityCONFIG_DEBUG_FS
: enable debug filesystemCONFIG_IP_SCTP
: enable SCTP support
FreeBSD (>= 10.x)
The following kernel configuration options are needed so that all tests can run:
options P1003_1B_MQUEUE
: Enable POSIX message queues (orkldload mqueuefs
)
Other Dependencies
Linux
The following additional development packages are needed to build the full test suite on Linux.
libcaprights
: See belowlibcap-dev
: Provides headers for POSIX.1e capabilities.libsctp1
: Provides SCTP library functions.libsctp-dev
: Provides headers for SCTP library functions.
Linux libcaprights
The Capsicum userspace library is held in the libcaprights/
subdirectory. Ideally, this
library should be built (with ./configure; make
or dpkg-buildpackage -uc -us
) and
installed (with make install
or dpkg -i libcaprights*.deb
) so that the tests will
use behave like a normal Capsicum-aware application.
However, if no installed copy of the library is found, the GNUmakefile
will attempt
to use the local libcaprights/*.c
source; this requires ./configure
to have been
performed in the libcaprights
subdirectory. The local code is also used for
cross-compiled builds of the test suite (e.g. make ARCH=32
or make ARCH=x32
).