svn commit: r286619 - head/sys/compat/cloudabi
Ed Schouten
ed at FreeBSD.org
Tue Aug 11 08:44:20 UTC 2015
Author: ed
Date: Tue Aug 11 08:44:19 2015
New Revision: 286619
URL: https://svnweb.freebsd.org/changeset/base/286619
Log:
Make cap_rights_limit() work for CloudABI processes.
Call into the recently introduced kern_cap_rights_limit() function to
restrict rights.
Modified:
head/sys/compat/cloudabi/cloudabi_fd.c
Modified: head/sys/compat/cloudabi/cloudabi_fd.c
==============================================================================
--- head/sys/compat/cloudabi/cloudabi_fd.c Tue Aug 11 08:43:50 2015 (r286618)
+++ head/sys/compat/cloudabi/cloudabi_fd.c Tue Aug 11 08:44:19 2015 (r286619)
@@ -523,6 +523,7 @@ cloudabi_sys_fd_stat_put(struct thread *
struct cloudabi_sys_fd_stat_put_args *uap)
{
cloudabi_fdstat_t fsb;
+ cap_rights_t rights;
int error, oflags;
error = copyin(uap->buf, &fsb, sizeof(fsb));
@@ -540,6 +541,13 @@ cloudabi_sys_fd_stat_put(struct thread *
CLOUDABI_FDFLAG_DSYNC | CLOUDABI_FDFLAG_RSYNC))
oflags |= O_SYNC;
return (kern_fcntl(td, uap->fd, F_SETFL, oflags));
+ } else if (uap->flags == CLOUDABI_FDSTAT_RIGHTS) {
+ /* Convert rights. */
+ error = cloudabi_convert_rights(
+ fsb.fs_rights_base | fsb.fs_rights_inheriting, &rights);
+ if (error != 0)
+ return (error);
+ return (kern_cap_rights_limit(td, uap->fd, &rights));
}
return (EINVAL);
}
More information about the svn-src-head
mailing list