aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Quartulli2022-09-14 20:59:37 +0200
committerGert Doering2022-10-09 09:22:05 +0200
commit39619b7fab213e9cadaa4a8b50b795ad63d9d91f (patch)
treeba2a2c38ca6076ac81a07380aa1910ca011ccbed
parent7d48d31b8226d5e3a5638e2369876381038bf5e2 (diff)
downloadopenvpn-39619b7fab213e9cadaa4a8b50b795ad63d9d91f.zip
openvpn-39619b7fab213e9cadaa4a8b50b795ad63d9d91f.tar.gz
get_user_pass_cr: get password from stdin if missing inline
Until now, when HTTP proxy user and password were specified inline, it was assumed that both creds were specified. A missing password would result in an empty password being stored. This behaviour is not ideal, as we want to allow the user to store the username, but let the password be entered via stdin. This affects both http proxy and authentication inline'd creds. Signed-off-by: Antonio Quartulli <a@unstable.cc> Acked-by: Gert Doering <gert@greenie.muc.de> Message-Id: <20220914185937.31423-2-a@unstable.cc> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg25215.html Signed-off-by: Gert Doering <gert@greenie.muc.de>
-rw-r--r--Changes.rst4
-rw-r--r--src/openvpn/misc.c5
2 files changed, 8 insertions, 1 deletions
diff --git a/Changes.rst b/Changes.rst
index 5a80dc0..df56f76 100644
--- a/Changes.rst
+++ b/Changes.rst
@@ -95,7 +95,9 @@ Session timeout
Inline auth username and password
Username and password can now be specified inline in the configuration file
- within the <auth-user-pass></auth-user-pass> tags.
+ within the <auth-user-pass></auth-user-pass> tags. If the password is
+ missing OpenVPN will prompt for input via stdin. This applies to inline'd
+ http-proxy-user-pass too.
Deprecated features
diff --git a/src/openvpn/misc.c b/src/openvpn/misc.c
index 07f6e20..50f7f97 100644
--- a/src/openvpn/misc.c
+++ b/src/openvpn/misc.c
@@ -197,6 +197,11 @@ get_user_pass_cr(struct user_pass *up,
buf_parse(&buf, '\n', up->username, USER_PASS_LEN);
}
buf_parse(&buf, '\n', up->password, USER_PASS_LEN);
+
+ if (strlen(up->password) == 0)
+ {
+ password_from_stdin = 1;
+ }
}
/*
* Read from auth file unless this is a dynamic challenge request.