cap_ioctls_limit(2) manage allowed ioctl commands

Other Alias

cap_ioctls_get

LIBRARY

Lb libc

SYNOPSIS

In sys/capability.h Ft int Fn cap_ioctls_limit int fd const unsigned long *cmds size_t ncmds Ft ssize_t Fn cap_ioctls_get int fd unsigned long *cmds size_t maxcmds

DESCRIPTION

If a file descriptor is granted the CAP_IOCTL capability right, the list of allowed ioctl(2) commands can be selectively reduced (but never expanded) with the Fn cap_ioctls_limit system call. The Fa cmds argument is an array of ioctl(2) commands and the Fa ncmds argument specifies the number of elements in the array. There can be up to 256 elements in the array.

The list of allowed ioctl commands for a given file descriptor can be obtained with the Fn cap_ioctls_get system call. The Fa cmds argument points at memory that can hold up to Fa maxcmds values. The function populates the provided buffer with up to Fa maxcmds elements, but always returns the total number of ioctl commands allowed for the given file descriptor. The total number of ioctls commands for the given file descriptor can be obtained by passing NULL as the Fa cmds argument and 0 as the Fa maxcmds argument. If all ioctl commands are allowed ( CAP_IOCTL capability right is assigned to the file descriptor and the Fn cap_ioctls_limit system call was never called for this file descriptor), the Fn cap_ioctls_get system call will return CAP_IOCTLS_ALL and won't modify the buffer pointed to by the Fa cmds argument.

RETURN VALUES

Rv -std cap_ioctls_limit

The Fn cap_ioctls_get function, if successful, returns the total number of allowed ioctl commands or the value CAP_IOCTLS_ALL if all ioctls commands are allowed. On failure the value -1 is returned and the global variable errno is set to indicate the error.

ERRORS

Fn cap_ioctls_limit succeeds unless:

Bq Er EBADF
The Fa fd argument is not a valid descriptor.
Bq Er EFAULT
The Fa cmds argument points at an invalid address.
Bq Er EINVAL
The Fa ncmds argument is greater than 256
Bq Er ENOTCAPABLE
Fa cmds would expand the list of allowed ioctl(2) commands.

Fn cap_ioctls_get succeeds unless:

Bq Er EBADF
The Fa fd argument is not a valid descriptor.
Bq Er EFAULT
The Fa cmds argument points at invalid address.

HISTORY

Support for capabilities and capabilities mode was developed as part of the TrustedBSD Project.

AUTHORS

This function was created by An Pawel Jakub Dawidek Aq [email protected] under sponsorship of the FreeBSD Foundation.