aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/kern_exec.c
diff options
context:
space:
mode:
authorJake Burkholder <jake@FreeBSD.org>2002-08-29 01:28:27 +0000
committerJake Burkholder <jake@FreeBSD.org>2002-08-29 01:28:27 +0000
commitf3bec5d7469aef003ff633680e9caa7d7daa9a63 (patch)
treeb89c81798efb71c0e6e53dc22a05d3d5250a04ad /sys/kern/kern_exec.c
parentb17c50db93061027c559b88bdf0fe7582892e71f (diff)
downloadsrc-f3bec5d7469aef003ff633680e9caa7d7daa9a63.tar.gz
src-f3bec5d7469aef003ff633680e9caa7d7daa9a63.zip
Don't require that sysentvec.sv_szsigcode be non-NULL.
Notes
Notes: svn path=/head/; revision=102548
Diffstat (limited to 'sys/kern/kern_exec.c')
-rw-r--r--sys/kern/kern_exec.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
index 292c18f5e7e2..887e75f9781c 100644
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -835,14 +835,18 @@ exec_copyout_strings(imgp)
char *stringp, *destp;
register_t *stack_base;
struct ps_strings *arginfo;
+ struct proc *p;
int szsigcode;
/*
* Calculate string base and vector table pointers.
* Also deal with signal trampoline code for this exec type.
*/
+ p = imgp->proc;
+ szsigcode = 0;
arginfo = (struct ps_strings *)PS_STRINGS;
- szsigcode = *(imgp->proc->p_sysent->sv_szsigcode);
+ if (p->p_sysent->sv_szsigcode != NULL)
+ szsigcode = *(p->p_sysent->sv_szsigcode);
destp = (caddr_t)arginfo - szsigcode - SPARE_USRSPACE -
roundup((ARG_MAX - imgp->stringspace), sizeof(char *));
@@ -850,8 +854,8 @@ exec_copyout_strings(imgp)
* install sigcode
*/
if (szsigcode)
- copyout(imgp->proc->p_sysent->sv_sigcode,
- ((caddr_t)arginfo - szsigcode), szsigcode);
+ copyout(p->p_sysent->sv_sigcode, ((caddr_t)arginfo -
+ szsigcode), szsigcode);
/*
* If we have a valid auxargs ptr, prepare some room