summaryrefslogtreecommitdiffstats
path: root/usr.bin/ssh/readpass.c
diff options
context:
space:
mode:
authordjm <djm@openbsd.org>2004-06-17 15:10:13 +0000
committerdjm <djm@openbsd.org>2004-06-17 15:10:13 +0000
commitf53dcc2a575a2291e53eb6f367e0f7324a0ef044 (patch)
tree1786d52db7f883776686b5ffc5da653da990a4cd /usr.bin/ssh/readpass.c
parentshared connection env passing regress test (diff)
downloadwireguard-openbsd-f53dcc2a575a2291e53eb6f367e0f7324a0ef044.tar.xz
wireguard-openbsd-f53dcc2a575a2291e53eb6f367e0f7324a0ef044.zip
Add option for confirmation (ControlMaster=ask) via ssh-askpass before opening
shared connections; ok markus@
Diffstat (limited to 'usr.bin/ssh/readpass.c')
-rw-r--r--usr.bin/ssh/readpass.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/usr.bin/ssh/readpass.c b/usr.bin/ssh/readpass.c
index 3cc94be0399..1a8397c4a8c 100644
--- a/usr.bin/ssh/readpass.c
+++ b/usr.bin/ssh/readpass.c
@@ -23,7 +23,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: readpass.c,v 1.29 2004/05/08 00:21:31 djm Exp $");
+RCSID("$OpenBSD: readpass.c,v 1.30 2004/06/17 15:10:14 djm Exp $");
#include <readpassphrase.h>
@@ -105,7 +105,9 @@ read_passphrase(const char *prompt, int flags)
int rppflags, use_askpass = 0, ttyfd;
rppflags = (flags & RP_ECHO) ? RPP_ECHO_ON : RPP_ECHO_OFF;
- if (flags & RP_ALLOW_STDIN) {
+ if (flags & RP_USE_ASKPASS)
+ use_askpass = 1;
+ else if (flags & RP_ALLOW_STDIN) {
if (!isatty(STDIN_FILENO))
use_askpass = 1;
} else {
@@ -117,6 +119,9 @@ read_passphrase(const char *prompt, int flags)
use_askpass = 1;
}
+ if ((flags & RP_USE_ASKPASS) && getenv("DISPLAY") == NULL)
+ return (flags & RP_ALLOW_EOF) ? NULL : xstrdup("");
+
if (use_askpass && getenv("DISPLAY")) {
if (getenv(SSH_ASKPASS_ENV))
askpass = getenv(SSH_ASKPASS_ENV);