PERFORCE change 134193 for review

Robert Watson rwatson at FreeBSD.org
Sun Jan 27 06:17:13 PST 2008


http://perforce.freebsd.org/chv.cgi?CH=134193

Change 134193 by rwatson at rwatson_freebsd_capabilities on 2008/01/27 14:16:17

	Add stubs for forthcoming execve-by-file descriptor (fexec) system
	call.

Affected files ...

.. //depot/projects/trustedbsd/capabilities/src/include/unistd.h#2 edit
.. //depot/projects/trustedbsd/capabilities/src/lib/libc/sys/Symbol.map#5 edit
.. //depot/projects/trustedbsd/capabilities/src/sys/kern/capabilities.conf#4 edit
.. //depot/projects/trustedbsd/capabilities/src/sys/kern/init_sysent.c#10 edit
.. //depot/projects/trustedbsd/capabilities/src/sys/kern/kern_exec.c#2 edit
.. //depot/projects/trustedbsd/capabilities/src/sys/kern/syscalls.c#10 edit
.. //depot/projects/trustedbsd/capabilities/src/sys/kern/syscalls.master#6 edit
.. //depot/projects/trustedbsd/capabilities/src/sys/kern/systrace_args.c#10 edit
.. //depot/projects/trustedbsd/capabilities/src/sys/sys/syscall.h#10 edit
.. //depot/projects/trustedbsd/capabilities/src/sys/sys/syscall.mk#10 edit
.. //depot/projects/trustedbsd/capabilities/src/sys/sys/sysproto.h#10 edit

Differences ...

==== //depot/projects/trustedbsd/capabilities/src/include/unistd.h#2 (text+ko) ====

@@ -335,6 +335,9 @@
 int	 execv(const char *, char * const *);
 int	 execve(const char *, char * const *, char * const *);
 int	 execvp(const char *, char * const *);
+#ifdef __BSD_VISIBLE
+int	 fexecve(int, char * const *, char * const *);
+#endif
 pid_t	 fork(void);
 long	 fpathconf(int, int);
 char	*getcwd(char *, size_t);

==== //depot/projects/trustedbsd/capabilities/src/lib/libc/sys/Symbol.map#5 (text) ====

@@ -969,4 +969,5 @@
 	cap_new;
 	cap_getrights;
 	cap_enter;
+	fexec;
 };

==== //depot/projects/trustedbsd/capabilities/src/sys/kern/capabilities.conf#4 (text+ko) ====

@@ -5,7 +5,7 @@
 # - sys_exit() and close() are very important.
 # - Sorted alphabeetically, please keep it that way.
 #
-# $P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/capabilities.conf#3 $
+# $P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/capabilities.conf#4 $
 #
 __acl_aclcheck_fd
 __acl_delete_fd
@@ -69,6 +69,7 @@
 # scoped.
 #
 fcntl
+fexec
 flock
 fork
 fpathconf

==== //depot/projects/trustedbsd/capabilities/src/sys/kern/init_sysent.c#10 (text+ko) ====

@@ -517,4 +517,5 @@
 	{ AS(cap_getrights_args), (sy_call_t *)cap_getrights, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED },	/* 485 = cap_getrights */
 	{ 0, (sy_call_t *)cap_enter, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED },		/* 486 = cap_enter */
 	{ AS(cap_getmode_args), (sy_call_t *)cap_getmode, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED },	/* 487 = cap_getmode */
+	{ AS(fexecve_args), (sy_call_t *)fexecve, AUE_NULL, NULL, 0, 0, 0 },	/* 488 = fexecve */
 };

==== //depot/projects/trustedbsd/capabilities/src/sys/kern/kern_exec.c#2 (text+ko) ====

@@ -221,6 +221,27 @@
 #endif
 }
 
+#ifndef _SYS_SYSPROTO_H_
+struct fexecve_args {
+	int	fd;
+	char	**argv;
+	char	**envv;
+};
+#endif
+int
+fexecve(td, uap)
+	struct thread *td;
+	struct fexecve_args /* {
+		int	fd;
+		char	**argv;
+		char	**envv;
+	} */ *uap;
+{
+
+	/* XXXRW: Real work to be done here. */
+	return (ENOSYS);
+}
+
 /*
  * XXX: kern_execve has the astonishing property of not always returning to
  * the caller.  If sufficiently bad things happen during the call to

==== //depot/projects/trustedbsd/capabilities/src/sys/kern/syscalls.c#10 (text+ko) ====

@@ -495,4 +495,5 @@
 	"cap_getrights",			/* 485 = cap_getrights */
 	"cap_enter",			/* 486 = cap_enter */
 	"cap_getmode",			/* 487 = cap_getmode */
+	"fexecve",			/* 488 = fexecve */
 };

==== //depot/projects/trustedbsd/capabilities/src/sys/kern/syscalls.master#6 (text+ko) ====

@@ -855,5 +855,7 @@
 				    u_int64_t *rightsp); }
 486	AUE_NULL	STD	{ int cap_enter(void); }
 487	AUE_NULL	STD	{ int cap_getmode(u_int *modep); }
+488	AUE_NULL	STD	{ int fexecve(int fd, char **argv, \
+				    char **envv); }
 ; Please copy any additions and changes to the following compatability tables:
 ; sys/compat/freebsd32/syscalls.master

==== //depot/projects/trustedbsd/capabilities/src/sys/kern/systrace_args.c#10 (text+ko) ====

@@ -2915,6 +2915,15 @@
 		*n_args = 1;
 		break;
 	}
+	/* fexecve */
+	case 488: {
+		struct fexecve_args *p = params;
+		iarg[0] = p->fd; /* int */
+		uarg[1] = (intptr_t) p->argv; /* char ** */
+		uarg[2] = (intptr_t) p->envv; /* char ** */
+		*n_args = 3;
+		break;
+	}
 	default:
 		*n_args = 0;
 		break;

==== //depot/projects/trustedbsd/capabilities/src/sys/sys/syscall.h#10 (text+ko) ====

@@ -407,4 +407,5 @@
 #define	SYS_cap_getrights	485
 #define	SYS_cap_enter	486
 #define	SYS_cap_getmode	487
-#define	SYS_MAXSYSCALL	488
+#define	SYS_fexecve	488
+#define	SYS_MAXSYSCALL	489

==== //depot/projects/trustedbsd/capabilities/src/sys/sys/syscall.mk#10 (text+ko) ====

@@ -355,4 +355,5 @@
 	cap_new.o \
 	cap_getrights.o \
 	cap_enter.o \
-	cap_getmode.o
+	cap_getmode.o \
+	fexecve.o

==== //depot/projects/trustedbsd/capabilities/src/sys/sys/sysproto.h#10 (text+ko) ====

@@ -1542,6 +1542,11 @@
 struct cap_getmode_args {
 	char modep_l_[PADL_(u_int *)]; u_int * modep; char modep_r_[PADR_(u_int *)];
 };
+struct fexecve_args {
+	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+	char argv_l_[PADL_(char **)]; char ** argv; char argv_r_[PADR_(char **)];
+	char envv_l_[PADL_(char **)]; char ** envv; char envv_r_[PADR_(char **)];
+};
 int	nosys(struct thread *, struct nosys_args *);
 void	sys_exit(struct thread *, struct sys_exit_args *);
 int	fork(struct thread *, struct fork_args *);
@@ -1887,6 +1892,7 @@
 int	cap_getrights(struct thread *, struct cap_getrights_args *);
 int	cap_enter(struct thread *, struct cap_enter_args *);
 int	cap_getmode(struct thread *, struct cap_getmode_args *);
+int	fexecve(struct thread *, struct fexecve_args *);
 
 #ifdef COMPAT_43
 
@@ -2457,6 +2463,7 @@
 #define	SYS_AUE_cap_getrights	AUE_NULL
 #define	SYS_AUE_cap_enter	AUE_NULL
 #define	SYS_AUE_cap_getmode	AUE_NULL
+#define	SYS_AUE_fexecve	AUE_NULL
 
 #undef PAD_
 #undef PADL_


More information about the p4-projects mailing list