aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2019-01-14 15:00:49 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2019-01-14 15:00:49 +0100
commit77524a311a510c9cc1bf6449d77b40d0f41a4a40 (patch)
tree4aa0d38c9cd52126175dc117c5cd25662348a91b
parent088fec36fedff2cd50437c95b7fb430abf8d303c (diff)
downloadbusybox-w32-77524a311a510c9cc1bf6449d77b40d0f41a4a40.tar.gz
busybox-w32-77524a311a510c9cc1bf6449d77b40d0f41a4a40.tar.bz2
busybox-w32-77524a311a510c9cc1bf6449d77b40d0f41a4a40.zip
start-stop-daemon: fix "both -x and -a" case: -a does override argv[0]
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--debianutils/start_stop_daemon.c7
-rwxr-xr-xtestsuite/start-stop-daemon.tests7
2 files changed, 12 insertions, 2 deletions
diff --git a/debianutils/start_stop_daemon.c b/debianutils/start_stop_daemon.c
index fa08f48cf..3a4c1044a 100644
--- a/debianutils/start_stop_daemon.c
+++ b/debianutils/start_stop_daemon.c
@@ -555,7 +555,10 @@ int start_stop_daemon_main(int argc UNUSED_PARAM, char **argv)
555 } 555 }
556 } 556 }
557#endif 557#endif
558//bb_error_msg("HERE %d '%s'%s'", __LINE__, argv[0], argv[1]); 558 /* Try:
559 execvp(argv[0], argv); 559 * strace -oLOG start-stop-daemon -S -x /bin/usleep -a qwerty 500000
560 * should exec "/bin/usleep", but argv[0] should be "qwerty":
561 */
562 execvp(execname, argv);
560 bb_perror_msg_and_die("can't execute '%s'", startas); 563 bb_perror_msg_and_die("can't execute '%s'", startas);
561} 564}
diff --git a/testsuite/start-stop-daemon.tests b/testsuite/start-stop-daemon.tests
index be1c1a856..2ddb7fefb 100755
--- a/testsuite/start-stop-daemon.tests
+++ b/testsuite/start-stop-daemon.tests
@@ -21,4 +21,11 @@ testing "start-stop-daemon without -x and -a" \
21 "1\n" \ 21 "1\n" \
22 "" "" 22 "" ""
23 23
24# Unfortunately, this does not actually check argv[0] correctness,
25# but at least it checks that pathname to exec() is correct
26testing "start-stop-daemon with both -x and -a" \
27 'start-stop-daemon -S -x /bin/false -a qwerty false 2>&1; echo $?' \
28 "1\n" \
29 "" ""
30
24exit $FAILCOUNT 31exit $FAILCOUNT