kern_exec.c (24994) | kern_exec.c (25115) |
---|---|
1/* 2 * Copyright (c) 1993, David Greenman 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * | 1/* 2 * Copyright (c) 1993, David Greenman 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * |
26 * $Id: kern_exec.c,v 1.61 1997/04/13 03:05:31 dyson Exp $ | 26 * $Id: kern_exec.c,v 1.62 1997/04/18 02:43:05 davidg Exp $ |
27 */ 28 29#include <sys/param.h> 30#include <sys/systm.h> 31#include <sys/sysproto.h> 32#include <sys/signalvar.h> 33#include <sys/kernel.h> 34#include <sys/mount.h> --- 78 unchanged lines hidden (view full) --- 113 /* 114 * Initialize part of the common data 115 */ 116 imgp->proc = p; 117 imgp->uap = uap; 118 imgp->attr = &attr; 119 imgp->image_header = NULL; 120 imgp->argc = imgp->envc = 0; | 27 */ 28 29#include <sys/param.h> 30#include <sys/systm.h> 31#include <sys/sysproto.h> 32#include <sys/signalvar.h> 33#include <sys/kernel.h> 34#include <sys/mount.h> --- 78 unchanged lines hidden (view full) --- 113 /* 114 * Initialize part of the common data 115 */ 116 imgp->proc = p; 117 imgp->uap = uap; 118 imgp->attr = &attr; 119 imgp->image_header = NULL; 120 imgp->argc = imgp->envc = 0; |
121 imgp->argv0 = NULL; |
|
121 imgp->entry_addr = 0; 122 imgp->vmspace_destroyed = 0; 123 imgp->interpreted = 0; 124 imgp->interpreter_name[0] = '\0'; 125 imgp->auxargs = NULL; 126 127 /* 128 * Allocate temporary demand zeroed space for argument and --- 301 unchanged lines hidden (view full) --- 430 431 /* 432 * extract arguments first 433 */ 434 435 argv = imgp->uap->argv; 436 437 if (argv) { | 122 imgp->entry_addr = 0; 123 imgp->vmspace_destroyed = 0; 124 imgp->interpreted = 0; 125 imgp->interpreter_name[0] = '\0'; 126 imgp->auxargs = NULL; 127 128 /* 129 * Allocate temporary demand zeroed space for argument and --- 301 unchanged lines hidden (view full) --- 431 432 /* 433 * extract arguments first 434 */ 435 436 argv = imgp->uap->argv; 437 438 if (argv) { |
438 while ((argp = (caddr_t) fuword(argv++))) { 439 if (argp == (caddr_t) -1) 440 return (EFAULT); 441 if ((error = copyinstr(argp, imgp->stringp, 442 imgp->stringspace, &length))) { 443 if (error == ENAMETOOLONG) 444 return(E2BIG); 445 return (error); 446 } 447 imgp->stringspace -= length; 448 imgp->stringp += length; 449 imgp->argc++; | 439 argp = (caddr_t) fuword(argv); 440 if (argp == (caddr_t) -1) 441 return (EFAULT); 442 if (argp) 443 argv++; 444 if (imgp->argv0) 445 argp = imgp->argv0; 446 if (argp) { 447 do { 448 if (argp == (caddr_t) -1) 449 return (EFAULT); 450 if ((error = copyinstr(argp, imgp->stringp, 451 imgp->stringspace, &length))) { 452 if (error == ENAMETOOLONG) 453 return(E2BIG); 454 return (error); 455 } 456 imgp->stringspace -= length; 457 imgp->stringp += length; 458 imgp->argc++; 459 } while ((argp = (caddr_t) fuword(argv++))); |
450 } | 460 } |
451 } | 461 } |
452 453 /* 454 * extract environment strings 455 */ 456 457 envv = imgp->uap->envv; 458 459 if (envv) { --- 191 unchanged lines hidden --- | 462 463 /* 464 * extract environment strings 465 */ 466 467 envv = imgp->uap->envv; 468 469 if (envv) { --- 191 unchanged lines hidden --- |