diff options
| author | Peter Wemm <peter@FreeBSD.org> | 1995-12-09 04:29:11 +0000 |
|---|---|---|
| committer | Peter Wemm <peter@FreeBSD.org> | 1995-12-09 04:29:11 +0000 |
| commit | 1ed012f9699c8cbf6e2685801f26d6924c3b21b2 (patch) | |
| tree | 3de7d7ce0562ddc16bed53d875d78c35a6f50986 | |
| parent | d2f265fab89fec2b4d450a74eea4489401c61b1a (diff) | |
Notes
| -rw-r--r-- | sys/kern/kern_exec.c | 10 | ||||
| -rw-r--r-- | sys/sys/exec.h | 10 |
2 files changed, 11 insertions, 9 deletions
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index 2b0196009538..c8d22c6a830a 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -28,7 +28,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: kern_exec.c,v 1.27 1995/11/13 10:45:22 davidg Exp $ + * $Id: kern_exec.c,v 1.28 1995/12/07 12:46:40 davidg Exp $ */ #include <sys/param.h> @@ -451,7 +451,9 @@ exec_copyout_strings(imgp) * Calculate string base and vector table pointers. */ arginfo = PS_STRINGS; - destp = (caddr_t)arginfo - roundup((ARG_MAX - imgp->stringspace), sizeof(char *)); + destp = (caddr_t)arginfo - SPARE_USRSPACE - + roundup((ARG_MAX - imgp->stringspace), sizeof(char *)); + /* * The '+ 2' is for the null pointers at the end of each of the * arg and env vector sets @@ -476,7 +478,7 @@ exec_copyout_strings(imgp) /* * Fill in "ps_strings" struct for ps, w, etc. */ - suword(&arginfo->ps_argvstr, (int)destp); + suword(&arginfo->ps_argvstr, (int)vectp); suword(&arginfo->ps_nargvstr, argc); /* @@ -492,7 +494,7 @@ exec_copyout_strings(imgp) /* a null vector table pointer seperates the argp's from the envp's */ suword(vectp++, NULL); - suword(&arginfo->ps_envstr, (int)destp); + suword(&arginfo->ps_envstr, (int)vectp); suword(&arginfo->ps_nenvstr, envc); /* diff --git a/sys/sys/exec.h b/sys/sys/exec.h index 5226c54cb381..4ace86b02e14 100644 --- a/sys/sys/exec.h +++ b/sys/sys/exec.h @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)exec.h 8.3 (Berkeley) 1/21/94 - * $Id: exec.h,v 1.10 1995/03/16 18:16:15 bde Exp $ + * $Id: exec.h,v 1.11 1995/11/13 07:44:03 bde Exp $ */ #ifndef _SYS_EXEC_H_ @@ -46,14 +46,14 @@ * The following structure is found at the top of the user stack of each * user process. The ps program uses it to locate argv and environment * strings. Programs that wish ps to display other information may modify - * it; normally ps_argvstr points to the text for argv[0], and ps_nargvstr + * it; normally ps_argvstr points to the argv vector, and ps_nargvstr * is the same as the program's argc. The fields ps_envstr and ps_nenvstr * are the equivalent for the environment. */ struct ps_strings { - char *ps_argvstr; /* first of 0 or more argument strings */ + char **ps_argvstr; /* first of 0 or more argument strings */ int ps_nargvstr; /* the number of argument strings */ - char *ps_envstr; /* first of 0 or more environment strings */ + char **ps_envstr; /* first of 0 or more environment strings */ int ps_nenvstr; /* the number of environment strings */ }; @@ -62,7 +62,7 @@ struct ps_strings { */ #define SPARE_USRSPACE 256 #define PS_STRINGS ((struct ps_strings *) \ - (USRSTACK - sizeof(struct ps_strings) - SPARE_USRSPACE)) + (USRSTACK - sizeof(struct ps_strings))) struct image_params; |
