@@ -274,12 +274,14 @@ int sane_execvp(const char *file, char * const argv[])
return -1;
}
-static const char *git_shell_path(void)
+static char *git_shell_path(void)
{
#ifndef GIT_WINDOWS_NATIVE
- return SHELL_PATH;
+ return xstrdup(SHELL_PATH);
#else
- return "sh";
+ char *p = locate_in_PATH("sh");
+ convert_slashes(p);
+ return p;
#endif
}
@@ -289,7 +291,7 @@ static const char **prepare_shell_cmd(struct strvec *out, const char **argv)
BUG("shell command is empty");
if (strcspn(argv[0], "|&;<>()$`\\\"' \t\n*?[#~=%") != strlen(argv[0])) {
- strvec_push(out, git_shell_path());
+ strvec_push_nodup(out, git_shell_path());
strvec_push(out, "-c");
/*