FreeBSD's libusb has three components: libusb01, libusb10, and libusb20.
libusb20 handles communication with character devices. We now accept
file descriptors (FDs) for /dev/usb (usbd_fd) and /dev/usbctl (cfd)
directly, allowing users to open these and apply capabilities
themselves.
libusb10 is updated to support capabilities via a context option. Since
libusb allows general read/write access, we preserve all possible
capabilities when passing FDs to libusb20. It's the responsibility of
the libusb user to call cap_enter() at an appropriate time.
libusb01 is currently unused, so Capsicum support is not implemented for
it.
All base system tools using libusb20 have been updated to support
Capsicum.
Sponsored by: The FreeBSD Foundation