Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Jun 2009 15:30:40 GMT
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 164010 for review
Message-ID:  <200906101530.n5AFUeEO087735@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=164010

Change 164010 by rwatson@rwatson_freebsd_capabilities on 2009/06/10 15:29:51

	Provide an argv[] argument fo lch_start() so that arguments can be
	passed to the agent.
	
	Properly set up capability for libz.zo.

Affected files ...

.. //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.3#4 edit
.. //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.h#6 edit
.. //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability_host.c#5 edit

Differences ...

==== //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.3#4 (text+ko) ====

@@ -47,7 +47,7 @@
 .Ft int
 .Fn lc_limitfd "int fd" "cap_rights_t rights"
 .Ft int
-.Fn lch_start "const char *agent" "struct lc_agent **lcap"
+.Fn lch_start "const char *agent" "char *const argv[]" "struct lc_agent **lcap"
 .Ft void
 .Fn lch_stop "struct lc_agent *lcap"
 .Ft int

==== //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.h#6 (text+ko) ====

@@ -30,7 +30,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.h#5 $
+ * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.h#6 $
  */
 
 #ifndef _LIBCAPABILITY_H_
@@ -47,7 +47,8 @@
 /*
  * Interfaces to start and stop capability mode agents.
  */
-int	lch_start(const char *agent, struct lc_agent **lcapp);
+int	lch_start(const char *agent, char *const argv[],
+	    struct lc_agent **lcapp);
 void	lch_stop(struct lc_agent *lcap);
 
 /*

==== //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability_host.c#5 (text+ko) ====

@@ -30,7 +30,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability_host.c#4 $
+ * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability_host.c#5 $
  */
 
 #include <sys/types.h>
@@ -139,7 +139,8 @@
 }
 
 static void
-lch_agent(int fd_sock, int fd_agent, int fd_ldso, int fd_libc, int fd_libz)
+lch_agent(int fd_sock, int fd_agent, int fd_ldso, int fd_libc, int fd_libz,
+    char *const argv[])
 {
 	char *env_caplibindex, *env_libcapability_agent_api;
 	int fd_array[8], fd_devnull;
@@ -158,6 +159,8 @@
 		return;
 	if (lc_limitfd(fd_libc, LIBCAPABILITY_CAPMASK_LIBC) < 0)
 		return;
+	if (lc_limitfd(fd_libz, LIBCAPABILITY_CAPMASK_LIBZ) < 0)
+		return;
 
 	fd_array[0] = fd_devnull;
 	fd_array[1] = fd_devnull;
@@ -196,11 +199,11 @@
 	if (cap_enter() < 0)
 		return;
 
-	(void)fexecve(5, ldso_argv, environ);
+	(void)fexecve(5, argv, environ);
 }
 
 int
-lch_start(const char *agent, struct lc_agent **lcapp)
+lch_start(const char *agent, char *const argv[], struct lc_agent **lcapp)
 {
 	struct lc_agent *lcap;
 	int fd_agent, fd_ldso, fd_libc, fd_libz, fd_procdesc, fd_sockpair[2];
@@ -249,7 +252,7 @@
 	}
 	if (pid == 0) {
 		lch_agent(fd_sockpair[1], fd_agent, fd_ldso, fd_libc,
-		    fd_libz);
+		    fd_libz, argv);
 		exit(-1);
 	}
 	close(fd_libz);



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