diff --git a/connect.c b/connect.c index 746dd27a18..c81f77001b 100644 --- a/connect.c +++ b/connect.c @@ -794,14 +794,13 @@ struct child_process *git_connect(int fd[2], const char *url, ssh = get_ssh_command(); if (ssh) { - char* split_ssh; - const char** ssh_argv; + char *split_ssh = xstrdup(ssh); + const char **ssh_argv; - split_ssh = xstrdup(ssh); - if (split_cmdline(split_ssh, &ssh_argv) >= 1) { + if (split_cmdline(split_ssh, &ssh_argv)) ssh_argv0 = xstrdup(ssh_argv[0]); - } free(split_ssh); + free((void *)ssh_argv); } else { /* * GIT_SSH is the no-shell version of @@ -818,9 +817,7 @@ struct child_process *git_connect(int fd[2], const char *url, } if (ssh_argv0) { - const char *base; - - base = basename(ssh_argv0); + const char *base = basename(ssh_argv0); tortoiseplink = !strcasecmp(base, "tortoiseplink") || !strcasecmp(base, "tortoiseplink.exe"); diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh index ff6bb9f643..5b228e2675 100755 --- a/t/t5601-clone.sh +++ b/t/t5601-clone.sh @@ -386,15 +386,18 @@ test_expect_success 'tortoiseplink is like putty, with extra arguments' ' expect_ssh "-batch -P 123" myhost src ' -test_expect_success 'double quoted plink.exe is treated specially (as putty) in GIT_SSH_COMMAND' ' +test_expect_success 'double quoted plink.exe in GIT_SSH_COMMAND' ' copy_ssh_wrapper_as "$TRASH_DIRECTORY/plink.exe" && - GIT_SSH_COMMAND="\"$TRASH_DIRECTORY/plink.exe\" -v" git clone "[myhost:123]:src" ssh-bracket-clone-plink-3 && + GIT_SSH_COMMAND="\"$TRASH_DIRECTORY/plink.exe\" -v" \ + git clone "[myhost:123]:src" ssh-bracket-clone-plink-3 && expect_ssh "-v -P 123" myhost src ' -test_expect_success 'single quoted plink.exe is treated specially (as putty) in GIT_SSH_COMMAND' ' +SQ="'" +test_expect_success 'single quoted plink.exe in GIT_SSH_COMMAND' ' copy_ssh_wrapper_as "$TRASH_DIRECTORY/plink.exe" && - GIT_SSH_COMMAND="'"'"'$TRASH_DIRECTORY/plink.exe'"'"' -v" git clone "[myhost:123]:src" ssh-bracket-clone-plink-4 && + GIT_SSH_COMMAND="$SQ$TRASH_DIRECTORY/plink.exe$SQ -v" \ + git clone "[myhost:123]:src" ssh-bracket-clone-plink-4 && expect_ssh "-v -P 123" myhost src '