use execvp() not execve() in tincctl start
authorMichael Tokarev <mjt@tls.msk.ru>
Sun, 7 Aug 2011 08:18:20 +0000 (12:18 +0400)
committerGuus Sliepen <guus@tinc-vpn.org>
Sun, 7 Aug 2011 08:51:21 +0000 (10:51 +0200)
sometimes argv[0] will have directory-less name (when the
command is started by shell searching in $PATH for example).
For tincctl start we want the same rules to run tincd as for
tincctl itself (having full path is better but if shell does
not provide one we've no other choice).  Previous code tried
to run ./tincd in this case, which is obviously wrong.

This is a fix for the previous commit.

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
src/tincctl.c

index b2e6e82172e2a08c49f270699ff5980d0361a100..f0515c925d3dc65ed37c0529bab237c5de4b265f 100644 (file)
@@ -516,7 +516,7 @@ static bool remove_service(void) {
 }
 #endif
 
-int main(int argc, char *argv[], char *envp[]) {
+int main(int argc, char *argv[]) {
        int fd;
        int result;
        char host[128];
@@ -586,7 +586,7 @@ int main(int argc, char *argv[], char *envp[]) {
                        if (i != optind && strcmp(argv[i], "--") != 0)
                                argv[j++] = argv[i];
                argv[j] = NULL;
-               execve(c, argv, envp);
+               execvp(c, argv);
                fprintf(stderr, "Could not start %s: %s\n", c, strerror(errno));
                return 1;
        }