diff options
Diffstat (limited to 'connect.c')
-rw-r--r-- | connect.c | 15 |
1 files changed, 11 insertions, 4 deletions
@@ -621,15 +621,22 @@ int finish_connect(struct child_process *conn) char *git_getpass(const char *prompt) { - char *askpass; + const char *askpass; struct child_process pass; const char *args[3]; static struct strbuf buffer = STRBUF_INIT; askpass = getenv("GIT_ASKPASS"); - - if (!askpass || !(*askpass)) - return getpass(prompt); + if (!askpass) + askpass = askpass_program; + if (!askpass) + askpass = getenv("SSH_ASKPASS"); + if (!askpass || !(*askpass)) { + char *result = getpass(prompt); + if (!result) + die_errno("Could not read password"); + return result; + } args[0] = askpass; args[1] = prompt; |