Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 May 2018 01:48:10 +0000 (UTC)
From:      Matt Macy <mmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r334069 - in head/sys: kern sys
Message-ID:  <201805230148.w4N1mALB085048@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mmacy
Date: Wed May 23 01:48:09 2018
New Revision: 334069
URL: https://svnweb.freebsd.org/changeset/base/334069

Log:
  kern_sendit: use pre-initialized rights

Modified:
  head/sys/kern/subr_capability.c
  head/sys/kern/uipc_syscalls.c
  head/sys/sys/capsicum.h

Modified: head/sys/kern/subr_capability.c
==============================================================================
--- head/sys/kern/subr_capability.c	Wed May 23 01:20:31 2018	(r334068)
+++ head/sys/kern/subr_capability.c	Wed May 23 01:48:09 2018	(r334069)
@@ -92,6 +92,7 @@ __read_mostly cap_rights_t cap_renameat_source_rights;
 __read_mostly cap_rights_t cap_renameat_target_rights;
 __read_mostly cap_rights_t cap_seek_rights;
 __read_mostly cap_rights_t cap_send_rights;
+__read_mostly cap_rights_t cap_send_connect_rights;
 __read_mostly cap_rights_t cap_setsockopt_rights;
 __read_mostly cap_rights_t cap_shutdown_rights;
 __read_mostly cap_rights_t cap_symlinkat_rights;
@@ -140,6 +141,7 @@ __cap_rights_sysinit1(void *arg)
 	cap_rights_init(&cap_renameat_target_rights, CAP_RENAMEAT_TARGET);
 	cap_rights_init(&cap_seek_rights, CAP_SEEK);
 	cap_rights_init(&cap_send_rights, CAP_SEND);
+	cap_rights_init(&cap_send_connect_rights, CAP_SEND, CAP_CONNECT);
 	cap_rights_init(&cap_setsockopt_rights, CAP_SETSOCKOPT);
 	cap_rights_init(&cap_shutdown_rights, CAP_SHUTDOWN);
 	cap_rights_init(&cap_symlinkat_rights, CAP_SYMLINKAT);

Modified: head/sys/kern/uipc_syscalls.c
==============================================================================
--- head/sys/kern/uipc_syscalls.c	Wed May 23 01:20:31 2018	(r334068)
+++ head/sys/kern/uipc_syscalls.c	Wed May 23 01:48:09 2018	(r334069)
@@ -722,7 +722,7 @@ kern_sendit(struct thread *td, int s, struct msghdr *m
 	struct uio auio;
 	struct iovec *iov;
 	struct socket *so;
-	cap_rights_t rights;
+	cap_rights_t *rights;
 #ifdef KTRACE
 	struct uio *ktruio = NULL;
 #endif
@@ -730,12 +730,12 @@ kern_sendit(struct thread *td, int s, struct msghdr *m
 	int i, error;
 
 	AUDIT_ARG_FD(s);
-	cap_rights_init(&rights, CAP_SEND);
+	rights = &cap_send_rights;
 	if (mp->msg_name != NULL) {
 		AUDIT_ARG_SOCKADDR(td, AT_FDCWD, mp->msg_name);
-		cap_rights_set(&rights, CAP_CONNECT);
+		rights = &cap_send_connect_rights;
 	}
-	error = getsock_cap(td, s, &rights, &fp, NULL, NULL);
+	error = getsock_cap(td, s, rights, &fp, NULL, NULL);
 	if (error != 0) {
 		m_freem(control);
 		return (error);

Modified: head/sys/sys/capsicum.h
==============================================================================
--- head/sys/sys/capsicum.h	Wed May 23 01:20:31 2018	(r334068)
+++ head/sys/sys/capsicum.h	Wed May 23 01:48:09 2018	(r334069)
@@ -441,6 +441,7 @@ extern cap_rights_t cap_renameat_source_rights;
 extern cap_rights_t cap_renameat_target_rights;
 extern cap_rights_t cap_seek_rights;
 extern cap_rights_t cap_send_rights;
+extern cap_rights_t cap_send_connect_rights;
 extern cap_rights_t cap_setsockopt_rights;
 extern cap_rights_t cap_shutdown_rights;
 extern cap_rights_t cap_symlinkat_rights;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201805230148.w4N1mALB085048>