Date: Sun, 27 Jan 2008 14:17:12 GMT From: Robert Watson <rwatson@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 134193 for review Message-ID: <200801271417.m0REHCU9087040@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=134193 Change 134193 by rwatson@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_
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200801271417.m0REHCU9087040>