aboutsummaryrefslogtreecommitdiff
path: root/libbb/vfork_daemon_rexec.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbb/vfork_daemon_rexec.c')
-rw-r--r--libbb/vfork_daemon_rexec.c10
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