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