Mercurial > dropbear
changeset 460:bde853a9e680
Add support for SSH_ASKPASS_ALWAYS env variable for dbclient. If it
(and also SSH_ASKPASS) is set then dbclient will use an external askpass
program regardless of whether DISPLAY is set or stdin is a TTY. Suggested
by Davyd Madeley for handheld devices.
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Fri, 14 Sep 2007 00:19:44 +0000 |
parents | f4addc06745b |
children | db4f6adcb7e2 |
files | cli-authpasswd.c |
diffstat | 1 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/cli-authpasswd.c Tue Sep 11 12:00:18 2007 +0000 +++ b/cli-authpasswd.c Fri Sep 14 00:19:44 2007 +0000 @@ -38,7 +38,9 @@ char* askpass_prog = NULL; askpass_prog = getenv("SSH_ASKPASS"); - return askpass_prog && !isatty(STDIN_FILENO) && getenv("DISPLAY"); + return askpass_prog && + ((!isatty(STDIN_FILENO) && getenv("DISPLAY") ) + || getenv("SSH_ASKPASS_ALWAYS")); } /* returns a statically allocated password from a helper app, or NULL @@ -125,10 +127,16 @@ cli_opts.username, cli_opts.remotehost); #ifdef ENABLE_CLI_ASKPASS_HELPER if (want_askpass()) + { password = gui_getpass(prompt); - else + if (!password) { + dropbear_exit("No password"); + } + } else #endif + { password = getpass_or_cancel(prompt); + } buf_putbyte(ses.writepayload, SSH_MSG_USERAUTH_REQUEST);