aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArne Schwabe2020-11-30 13:39:28 +0100
committerGert Doering2020-11-30 16:44:58 +0100
commitf9b73042892c14b906772e72b3116d809457c721 (patch)
tree62532406b58ea4c55bd0b1b35312aec6d7a323a5
parentf8c3e0aef2f6e03a0a5eafd81644c4079796649d (diff)
downloadopenvpn-f9b73042892c14b906772e72b3116d809457c721.zip
openvpn-f9b73042892c14b906772e72b3116d809457c721.tar.gz
Fix auth-token not being updated if auth-nocache is set
This fixes the auth-token not being updated if auth-nocache is set. Our set_auth_token method ensures that the auth-token always has a username but is a little bit too strict in the check. Also add doxygen documentation and remove null checks. We use this function only with non-null pointers and it makes it a bit nicer to read. Signed-off-by: Arne Schwabe <arne@rfc2549.org> Acked-by: Gert Doering <gert@greenie.muc.de> Message-Id: <20201130123928.21837-1-arne@rfc2549.org> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg21291.html Signed-off-by: Gert Doering <gert@greenie.muc.de> (cherry picked from commit fb789947ab1eba3e68fb8e4b3551d095a53962bd)
-rw-r--r--src/openvpn/misc.c9
-rw-r--r--src/openvpn/misc.h11
2 files changed, 18 insertions, 2 deletions
diff --git a/src/openvpn/misc.c b/src/openvpn/misc.c
index 9c5e96e..e3a2ef3 100644
--- a/src/openvpn/misc.c
+++ b/src/openvpn/misc.c
@@ -1324,10 +1324,15 @@ void
set_auth_token(struct user_pass *up, struct user_pass *tk, const char *token)
{
- if (token && strlen(token) && up && up->defined)
+ if (strlen(token) && (up->defined || tk->defined))
{
+ /* auth-token has no password, so it needs the username
+ * either already set or copied from up */
strncpynt(tk->password, token, USER_PASS_LEN);
- strncpynt(tk->username, up->username, USER_PASS_LEN);
+ if (up->defined)
+ {
+ strncpynt(tk->username, up->username, USER_PASS_LEN);
+ }
tk->defined = true;
}
diff --git a/src/openvpn/misc.h b/src/openvpn/misc.h
index 8a34f43..59c8ae2 100644
--- a/src/openvpn/misc.h
+++ b/src/openvpn/misc.h
@@ -259,6 +259,17 @@ void fail_user_pass(const char *prefix,
void purge_user_pass(struct user_pass *up, const bool force);
+/**
+ * Sets the auth-token to token if a username is available from either
+ * up or already present in tk. The method will also purge up if
+ * the auth-nocache option is active.
+ *
+ * @param up (non Auth-token) Username/password
+ * @param tk auth-token userpass to set
+ * @param token token to use as password for the
+ *
+ * @note all parameters to this function must not be null.
+ */
void set_auth_token(struct user_pass *up, struct user_pass *tk,
const char *token);