PATCH: replacing exec*p with BB_EXEC*P
Gabriel L. Somlo
somlo at cmu.edu
Sun Feb 4 23:23:55 UTC 2007
... And here's the rest of it again -- converting exec*p to BB_EXEC*P.
Either way you decide to go with bb_exec*p(), this should be applied
regardless... :)
Thanks,
Gabriel
diff -NarU5 busybox-svn-17770.orig/archival/tar.c busybox-svn-17770/archival/tar.c
--- busybox-svn-17770.orig/archival/tar.c 2007-02-04 16:25:47.000000000 -0500
+++ busybox-svn-17770/archival/tar.c 2007-02-04 16:30:04.000000000 -0500
@@ -527,11 +527,11 @@
dup2(tbInfo.tarFd, 1);
close(gzipStatusPipe[0]);
fcntl(gzipStatusPipe[1], F_SETFD, FD_CLOEXEC); /* close on exec shows success */
- execlp(zip_exec, zip_exec, "-f", NULL);
+ BB_EXECLP(zip_exec, zip_exec, "-f", NULL);
vfork_exec_errno = errno;
close(gzipStatusPipe[1]);
exit(-1);
} else if (gzipPid > 0) {
diff -NarU5 busybox-svn-17770.orig/console-tools/openvt.c busybox-svn-17770/console-tools/openvt.c
--- busybox-svn-17770.orig/console-tools/openvt.c 2007-02-04 16:25:47.000000000 -0500
+++ busybox-svn-17770/console-tools/openvt.c 2007-02-04 16:30:04.000000000 -0500
@@ -34,10 +34,10 @@
dup2(fd, STDIN_FILENO);
dup2(fd, STDOUT_FILENO);
dup2(fd, STDERR_FILENO);
while (fd > 2) close(fd--);
- execvp(argv[2], &argv[2]);
+ BB_EXECVP(argv[2], &argv[2]);
_exit(1);
}
return EXIT_SUCCESS;
}
diff -NarU5 busybox-svn-17770.orig/coreutils/chroot.c busybox-svn-17770/coreutils/chroot.c
--- busybox-svn-17770.orig/coreutils/chroot.c 2007-02-04 16:25:49.000000000 -0500
+++ busybox-svn-17770/coreutils/chroot.c 2007-02-04 16:30:04.000000000 -0500
@@ -31,8 +31,8 @@
*argv = (char *) DEFAULT_SHELL;
}
argv[1] = (char *) "-i";
}
- execvp(*argv, argv);
+ BB_EXECVP(*argv, argv);
bb_perror_msg_and_die("cannot execute %s", *argv);
}
diff -NarU5 busybox-svn-17770.orig/coreutils/env.c busybox-svn-17770/coreutils/env.c
--- busybox-svn-17770.orig/coreutils/env.c 2007-02-04 16:25:49.000000000 -0500
+++ busybox-svn-17770/coreutils/env.c 2007-02-04 16:30:04.000000000 -0500
@@ -79,11 +79,11 @@
}
++argv;
}
if (*argv) {
- execvp(*argv, argv);
+ BB_EXECVP(*argv, argv);
/* SUSv3-mandated exit codes. */
xfunc_error_retval = (errno == ENOENT) ? 127 : 126;
bb_perror_msg_and_die("%s", *argv);
}
diff -NarU5 busybox-svn-17770.orig/coreutils/install.c busybox-svn-17770/coreutils/install.c
--- busybox-svn-17770.orig/coreutils/install.c 2007-02-04 16:25:49.000000000 -0500
+++ busybox-svn-17770/coreutils/install.c 2007-02-04 16:30:04.000000000 -0500
@@ -124,11 +124,11 @@
) {
bb_perror_msg("cannot change ownership of %s", dest);
ret = EXIT_FAILURE;
}
if (flags & OPT_STRIP) {
- if (execlp("strip", "strip", dest, NULL) == -1) {
+ if (BB_EXECLP("strip", "strip", dest, NULL) == -1) {
bb_perror_msg("strip");
ret = EXIT_FAILURE;
}
}
if (ENABLE_FEATURE_CLEAN_UP && isdir) free(dest);
diff -NarU5 busybox-svn-17770.orig/coreutils/nice.c busybox-svn-17770/coreutils/nice.c
--- busybox-svn-17770.orig/coreutils/nice.c 2007-02-04 16:25:49.000000000 -0500
+++ busybox-svn-17770/coreutils/nice.c 2007-02-04 16:30:04.000000000 -0500
@@ -45,11 +45,11 @@
if (setpriority(PRIO_PROCESS, 0, prio) < 0) {
bb_perror_msg_and_die("setpriority(%d)", prio);
}
}
- execvp(*argv, argv); /* Now exec the desired program. */
+ BB_EXECVP(*argv, argv); /* Now exec the desired program. */
/* The exec failed... */
xfunc_error_retval = (errno == ENOENT) ? 127 : 126; /* SUSv3 */
bb_perror_msg_and_die("%s", *argv);
}
diff -NarU5 busybox-svn-17770.orig/coreutils/nohup.c busybox-svn-17770/coreutils/nohup.c
--- busybox-svn-17770.orig/coreutils/nohup.c 2007-02-04 16:25:49.000000000 -0500
+++ busybox-svn-17770/coreutils/nohup.c 2007-02-04 16:30:04.000000000 -0500
@@ -51,10 +51,10 @@
if (nullfd > 2)
close(nullfd);
signal(SIGHUP, SIG_IGN);
- execvp(argv[1], argv+1);
+ BB_EXECVP(argv[1], argv+1);
if (ENABLE_FEATURE_CLEAN_UP && home)
free((char*)nohupout);
bb_perror_msg_and_die("%s", argv[1]);
}
diff -NarU5 busybox-svn-17770.orig/e2fsprogs/fsck.c busybox-svn-17770/e2fsprogs/fsck.c
--- busybox-svn-17770.orig/e2fsprogs/fsck.c 2007-02-04 16:25:52.000000000 -0500
+++ busybox-svn-17770/e2fsprogs/fsck.c 2007-02-04 16:30:04.000000000 -0500
@@ -675,11 +675,11 @@
if (!interactive) {
/* NB: e2fsck will complain because of this!
* Use "fsck -s" to avoid... */
close(0);
}
- execvp(argv[0], argv);
+ BB_EXECVP(argv[0], argv);
bb_perror_msg_and_die("%s", argv[0]);
}
}
for (i = num_args+1; i < argc; i++)
diff -NarU5 busybox-svn-17770.orig/findutils/xargs.c busybox-svn-17770/findutils/xargs.c
--- busybox-svn-17770.orig/findutils/xargs.c 2007-02-04 16:25:53.000000000 -0500
+++ busybox-svn-17770/findutils/xargs.c 2007-02-04 16:30:04.000000000 -0500
@@ -58,11 +58,11 @@
if (p < 0)
bb_perror_msg_and_die("vfork");
if (p == 0) {
/* vfork -- child */
- execvp(args[0], args);
+ BB_EXECVP(args[0], args);
exec_errno = errno; /* set error to shared stack */
_exit(1);
}
/* vfork -- parent */
diff -NarU5 busybox-svn-17770.orig/loginutils/adduser.c busybox-svn-17770/loginutils/adduser.c
--- busybox-svn-17770.orig/loginutils/adduser.c 2007-02-04 16:25:53.000000000 -0500
+++ busybox-svn-17770/loginutils/adduser.c 2007-02-04 16:30:04.000000000 -0500
@@ -78,11 +78,11 @@
static void passwd_wrapper(const char *login) ATTRIBUTE_NORETURN;
static void passwd_wrapper(const char *login)
{
static const char prog[] = "passwd";
- execlp(prog, prog, login, NULL);
+ BB_EXECLP(prog, prog, login, NULL);
bb_error_msg_and_die("failed to execute '%s', you must set the password for '%s' manually", prog, login);
}
/* putpwent(3) remix */
static int adduser(struct passwd *p, unsigned long flags)
diff -NarU5 busybox-svn-17770.orig/loginutils/login.c busybox-svn-17770/loginutils/login.c
--- busybox-svn-17770.orig/loginutils/login.c 2007-02-04 16:25:53.000000000 -0500
+++ busybox-svn-17770/loginutils/login.c 2007-02-04 16:30:04.000000000 -0500
@@ -355,11 +355,11 @@
setenv("LOGIN_TTY", full_tty, 1);
setenv("LOGIN_USER", pw->pw_name, 1);
setenv("LOGIN_UID", utoa(pw->pw_uid), 1);
setenv("LOGIN_GID", utoa(pw->pw_gid), 1);
setenv("LOGIN_SHELL", pw->pw_shell, 1);
- execvp(script, t_argv);
+ BB_EXECVP(script, t_argv);
exit(1);
default: /* parent */
wait(NULL);
}
}
diff -NarU5 busybox-svn-17770.orig/miscutils/devfsd.c busybox-svn-17770/miscutils/devfsd.c
--- busybox-svn-17770.orig/miscutils/devfsd.c 2007-02-04 16:25:52.000000000 -0500
+++ busybox-svn-17770/miscutils/devfsd.c 2007-02-04 16:30:04.000000000 -0500
@@ -376,11 +376,11 @@
exit (EXIT_SUCCESS);
}
/* Child : if arg0 != NULL do execvp */
if(arg0 != NULL )
{
- execvp (arg0, arg);
+ BB_EXECVP(arg0, arg);
msg_logger_and_die(LOG_ERR, "execvp");
}
}
static void safe_memcpy( char *dest, const char *src, int len)
diff -NarU5 busybox-svn-17770.orig/miscutils/setsid.c busybox-svn-17770/miscutils/setsid.c
--- busybox-svn-17770.orig/miscutils/setsid.c 2007-02-04 16:25:52.000000000 -0500
+++ busybox-svn-17770/miscutils/setsid.c 2007-02-04 16:30:04.000000000 -0500
@@ -34,9 +34,9 @@
}
/* child */
setsid(); /* no error possible */
- execvp(argv[1], argv + 1);
+ BB_EXECVP(argv[1], argv + 1);
bb_perror_msg_and_die("%s", argv[1]);
}
diff -NarU5 busybox-svn-17770.orig/miscutils/taskset.c busybox-svn-17770/miscutils/taskset.c
--- busybox-svn-17770.orig/miscutils/taskset.c 2007-02-04 16:25:52.000000000 -0500
+++ busybox-svn-17770/miscutils/taskset.c 2007-02-04 16:30:04.000000000 -0500
@@ -89,11 +89,11 @@
state += 8;
++argv;
goto print_aff;
}
++argv;
- execvp(*argv, argv);
+ BB_EXECVP(*argv, argv);
bb_perror_msg_and_die("%s", *argv);
}
#undef OPT_p
#undef TASKSET_PRINTF_MASK
#undef from_cpuset
diff -NarU5 busybox-svn-17770.orig/miscutils/time.c busybox-svn-17770/miscutils/time.c
--- busybox-svn-17770.orig/miscutils/time.c 2007-02-04 16:25:52.000000000 -0500
+++ busybox-svn-17770/miscutils/time.c 2007-02-04 16:30:04.000000000 -0500
@@ -408,11 +408,11 @@
if (pid < 0)
bb_error_msg_and_die("cannot fork");
else if (pid == 0) { /* If child. */
/* Don't cast execvp arguments; that causes errors on some systems,
versus merely warnings if the cast is left off. */
- execvp(cmd[0], cmd);
+ BB_EXECVP(cmd[0], cmd);
bb_error_msg("cannot run %s", cmd[0]);
_exit(errno == ENOENT ? 127 : 126);
}
/* Have signals kill the child but not self (if possible). */
diff -NarU5 busybox-svn-17770.orig/networking/ifupdown.c busybox-svn-17770/networking/ifupdown.c
--- busybox-svn-17770.orig/networking/ifupdown.c 2007-02-04 16:25:44.000000000 -0500
+++ busybox-svn-17770/networking/ifupdown.c 2007-02-04 16:30:04.000000000 -0500
@@ -1002,11 +1002,11 @@
dup2(outfd[1], 1);
close(infd[0]);
close(infd[1]);
close(outfd[0]);
close(outfd[1]);
- execvp(command, argv);
+ BB_EXECVP(command, argv);
exit(127);
default: /* parent */
*in = fdopen(infd[1], "w");
*out = fdopen(outfd[0], "r");
close(infd[0]);
diff -NarU5 busybox-svn-17770.orig/networking/nc.c busybox-svn-17770/networking/nc.c
--- busybox-svn-17770.orig/networking/nc.c 2007-02-04 16:25:44.000000000 -0500
+++ busybox-svn-17770/networking/nc.c 2007-02-04 16:30:04.000000000 -0500
@@ -147,11 +147,11 @@
dup2(cfd, 0);
close(cfd);
}
dup2(0, 1);
dup2(0, 2);
- USE_NC_EXTRA(execvp(execparam[0], execparam);)
+ USE_NC_EXTRA(BB_EXECVP(execparam[0], execparam);)
/* Don't print stuff or it will go over the wire.... */
_exit(127);
}
// Select loop copying stdin to cfd, and cfd to stdout.
diff -NarU5 busybox-svn-17770.orig/runit/chpst.c busybox-svn-17770/runit/chpst.c
--- busybox-svn-17770.orig/runit/chpst.c 2007-02-04 16:25:53.000000000 -0500
+++ busybox-svn-17770/runit/chpst.c 2007-02-04 16:30:04.000000000 -0500
@@ -308,11 +308,11 @@
if (env_user) euidgid(env_user);
if (set_user) suidgid(set_user);
if (OPT_nostdin) close(0);
if (OPT_nostdout) close(1);
if (OPT_nostderr) close(2);
- execvp(argv[0], argv);
+ BB_EXECVP(argv[0], argv);
bb_perror_msg_and_die("exec %s", argv[0]);
}
static void setuidgid(int argc, char **argv)
{
@@ -320,11 +320,11 @@
account = *++argv;
if (!account) bb_show_usage();
if (!*++argv) bb_show_usage();
suidgid((char*)account);
- execvp(argv[0], argv);
+ BB_EXECVP(argv[0], argv);
bb_perror_msg_and_die("exec %s", argv[0]);
}
static void envuidgid(int argc, char **argv)
{
@@ -332,11 +332,11 @@
account = *++argv;
if (!account) bb_show_usage();
if (!*++argv) bb_show_usage();
euidgid((char*)account);
- execvp(argv[0], argv);
+ BB_EXECVP(argv[0], argv);
bb_perror_msg_and_die("exec %s", argv[0]);
}
static void envdir(int argc, char **argv)
{
@@ -344,11 +344,11 @@
dir = *++argv;
if (!dir) bb_show_usage();
if (!*++argv) bb_show_usage();
edir(dir);
- execvp(argv[0], argv);
+ BB_EXECVP(argv[0], argv);
bb_perror_msg_and_die("exec %s", argv[0]);
}
static void softlimit(int argc, char **argv)
{
@@ -367,8 +367,8 @@
if (option_mask32 & 0x200) limits = xatoul(s); // -s
if (option_mask32 & 0x400) limitt = xatoul(t); // -t
argv += optind;
if (!argv[0]) bb_show_usage();
slimit();
- execvp(argv[0], argv);
+ BB_EXECVP(argv[0], argv);
bb_perror_msg_and_die("exec %s", argv[0]);
}
diff -NarU5 busybox-svn-17770.orig/runit/runsvdir.c busybox-svn-17770/runit/runsvdir.c
--- busybox-svn-17770.orig/runit/runsvdir.c 2007-02-04 16:25:53.000000000 -0500
+++ busybox-svn-17770/runit/runsvdir.c 2007-02-04 16:30:04.000000000 -0500
@@ -71,11 +71,11 @@
prog[1] = (char*)name;
prog[2] = NULL;
sig_uncatch(SIGHUP);
sig_uncatch(SIGTERM);
if (pgrp) setsid();
- execvp(prog[0], prog);
+ BB_EXECVP(prog[0], prog);
//pathexec_run(*prog, prog, (char* const*)environ);
fatal2_cannot("start runsv ", name);
}
sv[no].pid = pid;
}
diff -NarU5 busybox-svn-17770.orig/util-linux/setarch.c busybox-svn-17770/util-linux/setarch.c
--- busybox-svn-17770.orig/util-linux/setarch.c 2007-02-04 16:25:54.000000000 -0500
+++ busybox-svn-17770/util-linux/setarch.c 2007-02-04 16:30:04.000000000 -0500
@@ -44,10 +44,10 @@
/* Try to set personality */
if (personality(pers) >= 0) {
/* Try to execute the program */
- execvp(argv[0], argv);
+ BB_EXECVP(argv[0], argv);
}
bb_perror_msg_and_die("%s", argv[0]);
}
More information about the busybox
mailing list