diff options
Diffstat (limited to 'libbb/vfork_daemon_rexec.c')
-rw-r--r-- | libbb/vfork_daemon_rexec.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c index 62beb6a5d..3845c0892 100644 --- a/libbb/vfork_daemon_rexec.c +++ b/libbb/vfork_daemon_rexec.c | |||
@@ -273,10 +273,12 @@ pid_t FAST_FUNC fork_or_rexec(char **argv) | |||
273 | /* fflush_all(); ? - so far all callers had no buffered output to flush */ | 273 | /* fflush_all(); ? - so far all callers had no buffered output to flush */ |
274 | 274 | ||
275 | pid = xvfork(); | 275 | pid = xvfork(); |
276 | if (pid) /* parent */ | 276 | if (pid == 0) /* child - re-exec ourself */ |
277 | return pid; | 277 | re_exec(argv); /* NORETURN */ |
278 | /* child - re-exec ourself */ | 278 | |
279 | re_exec(argv); | 279 | /* parent */ |
280 | argv[0][0] &= 0x7f; /* undo re_rexec() damage */ | ||
281 | return pid; | ||
280 | } | 282 | } |
281 | #endif | 283 | #endif |
282 | 284 | ||