Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CAP_RIGHTS_GET(3)	    Library Functions Manual	     CAP_RIGHTS_GET(3)

NAME
       cap_rights_get -- obtain	capability rights

LIBRARY
       Standard	C Library (libc, -lc)

SYNOPSIS
       #include	<sys/capsicum.h>

       int
       cap_rights_get(int fd, cap_rights_t *rights);

DESCRIPTION
       The  cap_rights_get function allows to obtain current capability	rights
       for the given descriptor.  The function will fill the  rights  argument
       with  all  capability  rights  if  they	were not limited or capability
       rights	configured   during    the    last    successful    call    of
       cap_rights_limit(2) on the given	descriptor.

       The rights argument can be inspected using cap_rights_init(3) family of
       functions.

       The  complete  list  of	the  capability	 rights	 can  be  found	in the
       rights(4) manual	page.

RETURN VALUES
       Upon successful completion, the value  0	 is  returned;	otherwise  the
       value  -1  is returned and the global variable errno is set to indicate
       the error.

EXAMPLES
       The following example demonstrates how to limit file  descriptor	 capa-
       bility rights and how to	obtain them.

       cap_rights_t setrights, getrights;
       int fd;

       memset(&setrights, 0, sizeof(setrights));
       memset(&getrights, 0, sizeof(getrights));

       fd = open("/tmp/foo", O_RDONLY);
       if (fd <	0)
	       err(1, "open() failed");

       cap_rights_init(&setrights, CAP_FSTAT, CAP_READ);
       if (cap_rights_limit(fd,	&setrights) < 0	&& errno != ENOSYS)
	       err(1, "cap_rights_limit() failed");

       if (cap_rights_get(fd, &getrights) < 0 && errno != ENOSYS)
	       err(1, "cap_rights_get()	failed");

       assert(memcmp(&setrights, &getrights, sizeof(setrights))	== 0);

ERRORS
       cap_rights_get()	succeeds unless:

       [EBADF]		  The fd argument is not a valid active	descriptor.

       [EFAULT]		  The rights argument points at	an invalid address.

SEE ALSO
       cap_rights_limit(2),  errno(2), open(2),	assert(3), cap_rights_init(3),
       err(3), memcmp(3), memset(3), capsicum(4), rights(4)

HISTORY
       The cap_rights_get() function first appeared in FreeBSD	9.2.   Support
       for  capabilities  and  capabilities  mode was developed	as part	of the
       TrustedBSD Project.

AUTHORS
       This function was created by Pawel  Jakub  Dawidek  <pawel@dawidek.net>
       under sponsorship of the	FreeBSD	Foundation.

FreeBSD	13.2			  May 5, 2020		     CAP_RIGHTS_GET(3)

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | EXAMPLES | ERRORS | SEE ALSO | HISTORY | AUTHORS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=cap_rights_get&sektion=3&manpath=FreeBSD+14.0-RELEASE+and+Ports>

home | help