freebsd-nq/contrib/capsicum-test
Alex Richardson 8cf5812af4 capsicum-test: Update for O_BENEATH removal
Update the tests to check O_RESOLVE_BENEATH instead.
If this looks reasonable, I'll try to upstream this change.
This keeps a compat fallback for O_BENEATH since the Linux port still
has/had O_BENEATH with "no .., no absolute paths" semantics.

Test Plan:	`/usr/tests/sys/capsicum/capsicum-test -u 977` passes and
		runs the O_RESOLVE_BENEATH tests.
Reviewed By:	markj
Differential Revision: https://reviews.freebsd.org/D29016
2021-03-12 17:12:10 +00:00
..
.gitignore
capability-fd-pair.cc
capability-fd.cc Update capsicum-test to git commit f4d97414d48b8f8356b971ab9f45dc5c70d53c40 2021-03-02 16:38:05 +00:00
capmode.cc Update capsicum-test to git commit f4d97414d48b8f8356b971ab9f45dc5c70d53c40 2021-03-02 16:38:05 +00:00
capsicum-freebsd.h
capsicum-linux.h
capsicum-rights.h
capsicum-test-main.cc Update capsicum-test to git commit 7707222b46abe52d18fd4fbb76115ffdb3e6f74b 2021-02-16 14:35:12 +00:00
capsicum-test.cc Fix capsicum-test build with GCC 2021-03-03 13:53:45 +00:00
capsicum-test.h Update capsicum-test to git commit f4d97414d48b8f8356b971ab9f45dc5c70d53c40 2021-03-02 16:38:05 +00:00
capsicum.h
CONTRIBUTING.md
fcntl.cc
fexecve.cc Update capsicum-test to git commit 7707222b46abe52d18fd4fbb76115ffdb3e6f74b 2021-02-16 14:35:12 +00:00
GNUmakefile Update capsicum-test to git commit f4d97414d48b8f8356b971ab9f45dc5c70d53c40 2021-03-02 16:38:05 +00:00
ioctl.cc
LICENSE
linux.cc Update capsicum-test to git commit 7707222b46abe52d18fd4fbb76115ffdb3e6f74b 2021-02-16 14:35:12 +00:00
makefile Update capsicum-test to git commit f4d97414d48b8f8356b971ab9f45dc5c70d53c40 2021-03-02 16:38:05 +00:00
mini-me.c
mqueue.cc Update capsicum-test to git commit 7707222b46abe52d18fd4fbb76115ffdb3e6f74b 2021-02-16 14:35:12 +00:00
openat.cc capsicum-test: Update for O_BENEATH removal 2021-03-12 17:12:10 +00:00
overhead.cc
procdesc.cc Update capsicum-test to git commit f4d97414d48b8f8356b971ab9f45dc5c70d53c40 2021-03-02 16:38:05 +00:00
README.md
rename.cc
sctp.cc
select.cc
showrights
smoketest.c
socket.cc Update capsicum-test to git commit f4d97414d48b8f8356b971ab9f45dc5c70d53c40 2021-03-02 16:38:05 +00:00
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 framework
  • CONFIG_PROCDESC: enable Capsicum process-descriptor functionality
  • CONFIG_DEBUG_FS: enable debug filesystem
  • CONFIG_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 (or kldload mqueuefs)

Other Dependencies

Linux

The following additional development packages are needed to build the full test suite on Linux.

  • libcaprights: See below
  • libcap-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).