summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2007-09-14 00:19:44 +0000
committerMatt Johnston <matt@ucc.asn.au>2007-09-14 00:19:44 +0000
commitad382ed415ddccbffbb6856739ccfe7d779551d0 (patch)
treeaa06a4e83679e58f384014773db305d5bed1a9bb
parent09b19d2cf54e3957b3b57f50c73dc0d03544b0ed (diff)
downloaddropbear-ad382ed415ddccbffbb6856739ccfe7d779551d0.tar.gz
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.
-rw-r--r--cli-authpasswd.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/cli-authpasswd.c b/cli-authpasswd.c
index 2500a25..1e0bd41 100644
--- a/cli-authpasswd.c
+++ b/cli-authpasswd.c
@@ -38,7 +38,9 @@ static int want_askpass()
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 @@ void cli_auth_password() {
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);