summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/ppp/pppd/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/ppp/pppd/main.c')
-rw-r--r--mdk-stage1/ppp/pppd/main.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/mdk-stage1/ppp/pppd/main.c b/mdk-stage1/ppp/pppd/main.c
index 8789d3b1d..c074938cd 100644
--- a/mdk-stage1/ppp/pppd/main.c
+++ b/mdk-stage1/ppp/pppd/main.c
@@ -1415,9 +1415,24 @@ device_script(program, in, out, dont_wait)
exit(1);
}
setgid(getgid());
- execl("/bin/sh", "sh", "-c", program, (char *)0);
- error("could not exec /bin/sh: %m");
- exit(99);
+ {
+ int argc = 0;
+ char * argv[500];
+ char * ptr = program;
+ while (ptr != NULL) {
+ argv[argc] = ptr;
+ argc++;
+ ptr = strchr(ptr, ' ');
+ if (ptr) {
+ ptr[0] = '\0';
+ ptr++;
+ }
+ }
+ argv[argc] = NULL;
+ execv(argv[0], argv);
+ error("could not exec %s: %m", program);
+ exit(99);
+ }
/* NOTREACHED */
}