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) } } #endif -//bb_error_msg("HERE %d '%s'%s'", __LINE__, argv[0], argv[1]); - execvp(argv[0], argv); + /* Try: + * strace -oLOG start-stop-daemon -S -x /bin/usleep -a qwerty 500000 + * should exec "/bin/usleep", but argv[0] should be "qwerty": + */ + execvp(execname, argv); bb_perror_msg_and_die("can't execute '%s'", startas); } 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" \ "1\n" \ "" "" +# Unfortunately, this does not actually check argv[0] correctness, +# but at least it checks that pathname to exec() is correct +testing "start-stop-daemon with both -x and -a" \ + 'start-stop-daemon -S -x /bin/false -a qwerty false 2>&1; echo $?' \ + "1\n" \ + "" "" + exit $FAILCOUNT