From d0736de43b0cd139e9d472088560404f89888bc6 Mon Sep 17 00:00:00 2001 From: pjd Date: Mon, 18 Nov 2013 22:37:01 +0000 Subject: MFC r258148,r258149,r258150,r258152,r258153,r258154,r258181,r258182: r258148: Add a note that this file is compiled as part of the kernel and libc. Requested by: kib r258149: Change cap_rights_merge(3) and cap_rights_remove(3) to return pointer to the destination cap_rights_t structure. This already matches manual page. r258150: Sync return value with actual implementation. r258151: Style. r258152: Precisely document capability rights here too (they are already documented in rights(4)). r258153: The CAP_LINKAT, CAP_MKDIRAT, CAP_MKFIFOAT, CAP_MKNODAT, CAP_RENAMEAT, CAP_SYMLINKAT and CAP_UNLINKAT capability rights make no sense without the CAP_LOOKUP right, so include this rights. r258154: - Move CAP_EXTATTR_* and CAP_ACL_* rights to index 1 to have more room in index 0 for the future. - Move CAP_BINDAT and CAP_CONNECTAT rights to index 0 so we can include CAP_LOOKUP right in them. - Shuffle the bits around so there are no gaps. This is last chance to do that as all moved rights are not used yet. r258181: Replace CAP_POLL_EVENT and CAP_POST_EVENT capability rights (which I had a very hard time to fully understand) with much more intuitive rights: CAP_EVENT - when set on descriptor, the descriptor can be monitored with syscalls like select(2), poll(2), kevent(2). CAP_KQUEUE_EVENT - When set on a kqueue descriptor, the kevent(2) syscall can be called on this kqueue to with the eventlist argument set to non-NULL value; in other words the given kqueue descriptor can be used to monitor other descriptors. CAP_KQUEUE_CHANGE - When set on a kqueue descriptor, the kevent(2) syscall can be called on this kqueue to with the changelist argument set to non-NULL value; in other words it allows to modify events monitored with the given kqueue descriptor. Add alias CAP_KQUEUE, which allows for both CAP_KQUEUE_EVENT and CAP_KQUEUE_CHANGE. Add backward compatibility define CAP_POLL_EVENT which is equal to CAP_EVENT. r258182: Correct right names. Sponsored by: The FreeBSD Foundation Approved by: re (kib) --- sys/kern/subr_capability.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'sys/kern/subr_capability.c') diff --git a/sys/kern/subr_capability.c b/sys/kern/subr_capability.c index 61ace5a..ce41f4a 100644 --- a/sys/kern/subr_capability.c +++ b/sys/kern/subr_capability.c @@ -30,6 +30,10 @@ #include __FBSDID("$FreeBSD$"); +/* + * Note that this file is compiled into the kernel and into libc. + */ + #ifdef _KERNEL #include #include @@ -164,7 +168,7 @@ __cap_rights_init(int version, cap_rights_t *rights, ...) return (rights); } -void +cap_rights_t * __cap_rights_set(cap_rights_t *rights, ...) { va_list ap; @@ -174,9 +178,11 @@ __cap_rights_set(cap_rights_t *rights, ...) va_start(ap, rights); cap_rights_vset(rights, ap); va_end(ap); + + return (rights); } -void +cap_rights_t * __cap_rights_clear(cap_rights_t *rights, ...) { va_list ap; @@ -186,6 +192,8 @@ __cap_rights_clear(cap_rights_t *rights, ...) va_start(ap, rights); cap_rights_vclear(rights, ap); va_end(ap); + + return (rights); } bool @@ -231,7 +239,7 @@ cap_rights_is_valid(const cap_rights_t *rights) return (true); } -void +cap_rights_t * cap_rights_merge(cap_rights_t *dst, const cap_rights_t *src) { unsigned int i, n; @@ -250,9 +258,11 @@ cap_rights_merge(cap_rights_t *dst, const cap_rights_t *src) assert(cap_rights_is_valid(src)); assert(cap_rights_is_valid(dst)); + + return (dst); } -void +cap_rights_t * cap_rights_remove(cap_rights_t *dst, const cap_rights_t *src) { unsigned int i, n; @@ -273,6 +283,8 @@ cap_rights_remove(cap_rights_t *dst, const cap_rights_t *src) assert(cap_rights_is_valid(src)); assert(cap_rights_is_valid(dst)); + + return (dst); } bool -- cgit v1.1