diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2019-01-14 15:00:49 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2019-01-14 15:00:49 +0100 |
commit | 77524a311a510c9cc1bf6449d77b40d0f41a4a40 (patch) | |
tree | 4aa0d38c9cd52126175dc117c5cd25662348a91b | |
parent | 088fec36fedff2cd50437c95b7fb430abf8d303c (diff) | |
download | busybox-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.c | 7 | ||||
-rwxr-xr-x | testsuite/start-stop-daemon.tests | 7 |
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 | ||
26 | testing "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 | |||
24 | exit $FAILCOUNT | 31 | exit $FAILCOUNT |