Calls one or more of malloc(), warn(), err(), syslog(), execlp() or

execvp() in the child branch of a vfork(). Changed to use fork()
instead.

Some of these (mv, find, apply, xargs) might benefit greatly from
being rewritten to use vfork() properly.

PR:		Loosely related to bin/8252
Approved by:	jkh and bde
This commit is contained in:
Dag-Erling Smørgrav 1998-10-13 14:52:33 +00:00
parent 0ffc35a465
commit 1fd98d7d88
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=40301
12 changed files with 27 additions and 31 deletions

View File

@ -45,7 +45,7 @@ static char const copyright[] =
static char sccsid[] = "@(#)mv.c 8.2 (Berkeley) 4/2/94";
#endif
static const char rcsid[] =
"$Id: mv.c,v 1.20 1998/06/09 03:39:38 imp Exp $";
"$Id: mv.c,v 1.21 1998/06/28 21:00:04 bde Exp $";
#endif /* not lint */
#include <sys/param.h>
@ -308,7 +308,7 @@ copy(from, to)
{
int pid, status;
if ((pid = vfork()) == 0) {
if ((pid = fork()) == 0) {
execl(_PATH_CP, "mv", "-PRp", from, to, NULL);
warn("%s", _PATH_CP);
_exit(1);

View File

@ -36,7 +36,7 @@
static const char sccsid[] = "@(#)pw_util.c 8.3 (Berkeley) 4/2/94";
#endif
static const char rcsid[] =
"$Id$";
"$Id: pw_util.c,v 1.9 1997/10/27 07:53:19 charnier Exp $";
#endif /* not lint */
/*
@ -148,7 +148,7 @@ char *username;
pid_t pid;
(void)fflush(stderr);
if (!(pid = vfork())) {
if (!(pid = fork())) {
if(!username) {
warnx("rebuilding the database...");
execl(_PATH_PWD_MKDB, "pwd_mkdb", "-p", tempname, NULL);
@ -180,7 +180,7 @@ pw_edit(notsetuid)
else
p = editor;
if (!(editpid = vfork())) {
if (!(editpid = fork())) {
if (notsetuid) {
(void)setgid(getgid());
(void)setuid(getuid());

View File

@ -207,7 +207,7 @@ system(command)
return(1);
omask = sigblock(sigmask(SIGCHLD));
switch(pid = vfork()) {
switch(pid = fork()) {
case -1: /* error */
err(1, "fork");
case 0: /* child */

View File

@ -308,7 +308,7 @@ f_exec(plan, entry)
/* make sure find output is interspersed correctly with subprocesses */
fflush(stdout);
switch (pid = vfork()) {
switch (pid = fork()) {
case -1:
err(1, "fork");
/* NOTREACHED */
@ -414,7 +414,7 @@ f_execdir(plan, entry)
fflush(stdout);
fflush(stderr);
switch (pid = vfork()) {
switch (pid = fork()) {
case -1:
err(1, "fork");
/* NOTREACHED */

View File

@ -32,7 +32,7 @@
static char sccsid[] = "@(#)update.c 1.2 91/03/11 Copyr 1986 Sun Micro";
#endif
static const char rcsid[] =
"$Id: update.c,v 1.2 1997/07/29 06:54:16 charnier Exp $";
"$Id: update.c,v 1.3 1998/02/20 04:38:20 jb Exp $";
#endif
/*
@ -167,11 +167,7 @@ _openchild(command, fto, ffrom)
if (pipe(pdfrom) < 0) {
goto error2;
}
#ifdef VFORK
switch (pid = vfork()) {
#else
switch (pid = fork()) {
#endif
case -1:
goto error3;

View File

@ -42,7 +42,7 @@ static const char copyright[] =
static char sccsid[] = "@(#)time.c 8.1 (Berkeley) 6/6/93";
#endif
static const char rcsid[] =
"$Id: time.c,v 1.10 1998/07/28 10:08:16 des Exp $";
"$Id: time.c,v 1.11 1998/08/24 10:16:59 cracauer Exp $";
#endif /* not lint */
#include <sys/types.h>
@ -106,7 +106,7 @@ main(argc, argv)
}
gettimeofday(&before, (struct timezone *)NULL);
switch(pid = vfork()) {
switch(pid = fork()) {
case -1: /* error */
err(1, "time");
/* NOTREACHED */

View File

@ -722,9 +722,9 @@ char *argv[];
child_died(); /* Start up signal handler */
shell_active = 1; /* We are running down below */
if (shell_pid = vfork()) {
if (shell_pid = fork()) {
if (shell_pid == -1) {
perror("vfork");
perror("fork");
(void) close(serversock);
} else {
state = UNCONNECTED;

View File

@ -31,7 +31,7 @@
#ifndef lint
static const char rcsid[] =
"$Id$";
"$Id: setup.c,v 1.7 1998/01/05 07:30:25 charnier Exp $";
#endif /* not lint */
/*
@ -56,7 +56,7 @@ static int evflags = 0;
/*
* setup_and_wait() is called to start a process. All it really does
* is vfork(), set itself up to stop on exec or exit, and then exec
* is fork(), set itself up to stop on exec or exit, and then exec
* the given command. At that point, the child process stops, and
* the parent can wake up and deal with it.
*/
@ -69,9 +69,9 @@ setup_and_wait(char *command[]) {
int pid;
int flags;
pid = vfork();
pid = fork();
if (pid == -1) {
err(1, "vfork failed");
err(1, "fork failed");
}
if (pid == 0) { /* Child */
int mask = S_EXEC | S_EXIT;

View File

@ -42,7 +42,7 @@ static const char copyright[] =
static char sccsid[] = "@(#)from: vacation.c 8.2 (Berkeley) 1/26/94";
#endif
static const char rcsid[] =
"$Id$";
"$Id: vacation.c,v 1.12 1997/11/03 07:51:05 charnier Exp $";
#endif /* not lint */
/*
@ -417,7 +417,7 @@ sendmessage(myname)
syslog(LOG_ERR, "vacation: pipe: %s", strerror(errno));
exit(1);
}
i = vfork();
i = fork();
if (i < 0) {
syslog(LOG_ERR, "vacation: fork: %s", strerror(errno));
exit(1);

View File

@ -45,7 +45,7 @@ static const char copyright[] =
static char sccsid[] = "@(#)xargs.c 8.1 (Berkeley) 6/6/93";
#endif
static const char rcsid[] =
"$Id: xargs.c,v 1.5 1997/08/27 06:26:23 charnier Exp $";
"$Id: xargs.c,v 1.6 1998/06/17 12:58:43 jkoshy Exp $";
#endif /* not lint */
#include <sys/types.h>
@ -287,9 +287,9 @@ run(argv)
(void)fflush(stderr);
}
noinvoke = 0;
switch(pid = vfork()) {
switch(pid = fork()) {
case -1:
err(1, "vfork");
err(1, "fork");
case 0:
execvp(argv[0], argv);
warn("%s", argv[0]);

View File

@ -42,7 +42,7 @@ static const char copyright[] =
static char sccsid[] = "From: @(#)xinstall.c 8.1 (Berkeley) 7/21/93";
#endif
static const char rcsid[] =
"$Id: xinstall.c,v 1.31 1998/01/20 13:52:32 bde Exp $";
"$Id: xinstall.c,v 1.32 1998/06/02 12:00:07 peter Exp $";
#endif /* not lint */
/*-
@ -645,7 +645,7 @@ strip(to_name)
{
int serrno, status;
switch (vfork()) {
switch (fork()) {
case -1:
serrno = errno;
(void)unlink(to_name);

View File

@ -36,7 +36,7 @@
static const char sccsid[] = "@(#)pw_util.c 8.3 (Berkeley) 4/2/94";
#endif
static const char rcsid[] =
"$Id$";
"$Id: pw_util.c,v 1.9 1997/10/27 07:53:19 charnier Exp $";
#endif /* not lint */
/*
@ -148,7 +148,7 @@ char *username;
pid_t pid;
(void)fflush(stderr);
if (!(pid = vfork())) {
if (!(pid = fork())) {
if(!username) {
warnx("rebuilding the database...");
execl(_PATH_PWD_MKDB, "pwd_mkdb", "-p", tempname, NULL);
@ -180,7 +180,7 @@ pw_edit(notsetuid)
else
p = editor;
if (!(editpid = vfork())) {
if (!(editpid = fork())) {
if (notsetuid) {
(void)setgid(getgid());
(void)setuid(getuid());