summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>1995-12-09 04:29:11 +0000
committerPeter Wemm <peter@FreeBSD.org>1995-12-09 04:29:11 +0000
commit1ed012f9699c8cbf6e2685801f26d6924c3b21b2 (patch)
tree3de7d7ce0562ddc16bed53d875d78c35a6f50986
parentd2f265fab89fec2b4d450a74eea4489401c61b1a (diff)
Notes
-rw-r--r--sys/kern/kern_exec.c10
-rw-r--r--sys/sys/exec.h10
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;